Asp.net mvc MVC中的路由问题

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

我正在与MVC3合作,遇到了一个问题。我没有像预期的那样给出mydomain/mydirectory/item,而是得到以下结果:

mydomain/mydirectory/list?animal=quack

这是全球交通的路线

//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"}
);