开发者

Custom route doesn't find controller action

For some reason my application isn't routing to my controller method correctly. I have a routelink like this in my webpage -

<%= Html.RouteLink("View", "Blog", new { id=(item.BlogId), slug=(item.Slug) }) %> 

In global.asax.cs I have the following routes -

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "MoreBlogs",
        "Blog/Page/{page}",
        new { controller = "Blog", action = "Index" }
    );

    routes.MapRoute(
        "Blog",
        "Blog/View/{id}/{slug}",
        new { controller = "Blog", action = "View"}
    );

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Blog", action = "Index", id = UrlParamet开发者_开发问答er.Optional } // Parameter defaults
    );

And then I have a class BlogController that has a method -

   public ActionResult View(int id, string slug)
    {

       ... etc.
    }

I put a breakpoint in the first line of the View method but it's not getting hit at all. I checked with a route debugger for the format localhost/Blog/View/1/test and it matched my custom route. All I'm getting is a 404 while running this, I can't work out why the route won't post to the view method in my controller - any ideas?


(Assuming the route debugger was based on Phil Haack's debugger post)

If you're getting a 404, that makes me think the actual view page itself cannot be found.


Assuming that you are also using areas within the application, and that RouteLink is actually being called from within an Area, I think you may need to specify area="" in your routeValues object ( you also need to specify the controller). In general, I think that you will need to add the area="..." part with all your Routelink calls when using Areas.

This is something that I have picked up about RouteLink and Area, but cant seem to find any reference material detailing the limitations.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜