C# Global.asax中的RegisterRoutes
我不能完全理解注册表的内容。假设浏览器的当前URL为C# Global.asax中的RegisterRoutes,c#,asp.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我不能完全理解注册表的内容。假设浏览器的当前URL为 //Home/ListCompanies/{filter} http://localhost:21047/Home/ListProducers/Yerli 我们通过下面的链接找到了上面的地址 @Html.ActionLink("Yerli Markalar", "ListProducers/Yerli", "Home") 我在当前页面上有一个链接,如下所示 @Html.ActionLink("Bayiler", "ListCompanie
//Home/ListCompanies/{filter}
http://localhost:21047/Home/ListProducers/Yerli
我们通过下面的链接找到了上面的地址
@Html.ActionLink("Yerli Markalar", "ListProducers/Yerli", "Home")
我在当前页面上有一个链接,如下所示
@Html.ActionLink("Bayiler", "ListCompanies", "Home")
http://localhost:21047/Home/ListCompanies/Yerli
但当我停留在最后一个链接上时,它也会显示“Yerli”过滤器,我在链接中没有给出它
为什么过滤器“耶利”会出现在这里?它应该像下面这样
http://localhost:21047/Home/ListCompanies/
我做错了什么
这是我的路线
routes.MapRoute(
null,
"Home/ListProducers/{filter}", // Route name
new { controller = "Home", action = "ListProducers", filter = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
null,
"Home/ListCompanies/{filter}", // Route name
new { controller = "Home", action = "ListCompanies", filter = UrlParameter.Optional } // Parameter defaults
);
首先,您不使用
@Html.ActionLink("Yerli Markalar", "ListProducers/Yerli", "Home")
如果“Yerli”是要传递给的参数
public ActionResult ListProducers(string filter)
那就需要
@Html.ActionLink("Yerli Markalar", "ListProducers", "Home", new { filter = "Yerli" }, null)
这将生成…/Home/ListCompanies/Yerli
您的问题是,您已经将操作
参数生成为ListCompanies/Yerli
,而它应该是ListCompanies
注意,您还应该命名您的路线
routes.MapRoute(
"ListProducers", // name it!
"Home/ListProducers/{filter}", // Route name
new { controller = "Home", action = "ListProducers", filter = UrlParameter.Optional } // Parameter defaults
);
但是,这些路由似乎不必要,您可以删除它们,让默认路由处理它
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
只需将方法更改为
public ActionResult ListProducers(string id)
和使用
@Html.ActionLink("Yerli Markalar", "ListProducers", "Home", new { id = "Yerli" }, null)
哪个会产生完全相同的结果您可以发布实际路线吗?哪个路线?我不明白你的路线是如何在代码中定义的?我添加了路线@VsevolodGoloviznin。正如你所说,当我替换ActionLink和MapRoutes时,我单击了它指向“”的链接。为什么它的行为是这样的?我不得不像这样使用它“@Html.ActionLink(“Yerli Markalar”,“ListProducers”,“Home”,new{filter=“Yerli”},null)”是的,这是正确的(稍后会更新),重载也需要传递Html属性(最后一个参数)