开发者

ASP.NET MVC How can better filter my route?

I have added a new route to my routing table:

  routes.MapRoute(
          "ModuleRoute", // Route name
          "Module/{href}", // URL with parameters
          new { controller = "Module开发者_开发百科", action = "GetHtml" }// Parameter defaults
      );

I need this route to match on the following url structure:

/module/123abc.html

The problem is it also matches on this structure

/module/Launch/123abc.html

Calling link :

    <%: Html.ActionLink("Launch", "Launch", new { href = item.Href })%>   

How do I stop that from happening? I want he second structure to continue to be matched by the default route. I thought that because the number of parameters are different that this would not be a problem.

How can better filter my route to prevent this?

Thanks!


i agree with Max Toro, i've done some testing and that URL doesn't match Module/{href}.

This:

<%: Html.ActionLink("Launch", "Launch", new { href = item.Href })%>

is actually hitting the default route. You see this if you change the default route to the below (note the id is changed to href

 routes.MapRoute(
     "Default", // Route name
     "{controller}/{action}/{href}", // URL with parameters
     new { controller = "Home", action = "Index", href = UrlParameter.Optional } // Parameter defaults
 );

so, this proves it is falling through the first route since it gets a proper url (no querystrings)

what it is doing (when you have the usual default route with id) is that the controller and action are matched but the id isn't. This is OK - the route still matches but leaves off the id. All additional values, such as your href are appended as querystring parameters so you end up with:

module/Launch?href=123abc.html

The way to get around it is to add another route similar to the one above that uses href instead of id

something like:

 routes.MapRoute(
     "Launch",
     "Module/Launch/{href}",
     new { controller = "Module", action = "Launch", href = UrlParameter.Optional }
 );
0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜