Asp.net mvc MVC中的路由问题
我正在与MVC3合作,遇到了一个问题。我没有像预期的那样给出mydomain/mydirectory/item,而是得到以下结果: mydomain/mydirectory/list?animal=quack 这是全球交通的路线Asp.net mvc MVC中的路由问题,asp.net-mvc,Asp.net Mvc,我正在与MVC3合作,遇到了一个问题。我没有像预期的那样给出mydomain/mydirectory/item,而是得到以下结果: mydomain/mydirectory/list?animal=quack 这是全球交通的路线 //Default route mapping routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new
//Default route mapping
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new { controller = @"[^\.]*", action = @"[^\.]*" }
);
显示如何构建链接的代码:
{
item.Template(galleryImage=>
{%>
有什么想法吗?Html.ActionLink的重载是:
Html.ActionLink("linkText", "actionName", "controller", object routeValues, object HtmlAttributes)
根据您所说的,mydirectory
=控制器,List
=操作,对吗?如果是,请尝试:
<%= Html.ActionLink(galleryImage.AnimalName, "List", "mydirectory", new { @id = galleryImage.AnimalName }, null) %>
这应产生:
<a href="/mydirectory/list/quack">quack</a>
您必须为特殊情况下的路由定义一个路由,如您的实例。由于您将“动物”作为参数传递,您应该创建一个路由来处理该实例。在global.aspx(默认路由上方)中,创建如下内容:
routes.MapRoute(
"Animal", // A distinct Route name
"{controller}/{action}/{animal}", // URL with parameters
new { controller = "MyDirectory", action = "List"}
);
这将在操作列表上定义到MyDirectory控制器的路由,其中包含一个动物参数,该参数不是可选的。。定义路由使您能够从html帮助程序和其他方法生成干净的URL(重定向到操作等).分享用于创建链接的代码也是一个好主意。
routes.MapRoute(
"Animal", // A distinct Route name
"{controller}/{action}/{animal}", // URL with parameters
new { controller = "MyDirectory", action = "List"}
);