希望在阅读MVC路由后得到一些帮助,而不是自己提出答案。
我注册了以下路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
null,
"YourFeedback/Article/{resourceId}",
new { controller = "YourFeedback", action = "Index", contentTypeId = new Guid(ConfigurationManager.AppSettings["ArticleLibraryId"]) });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
我在aspx视图中有以下ActionLink:
<%=Html.ActionLink("Your Feedback", "Article", "YourFeedback", new
{
resourceId = Model.ContentId.ResourceId
}, new { @class = "yourFeedback" })%>
我对MVC路由的理解是,这将呈现一个href为“/ YourFeedback / Article / 101”的锚链接,其中101来自Model.ContentId.ResourceId。
然而,锚链接href呈现为“YourFeedback / Article / resourceId = 101”。
我出错的任何想法?
提前致谢。
答案 0 :(得分:2)
这是因为您的actionlink将匹配第二条路线而不是第一条路线。原因是您的第一条路线中有一些奇怪的默认值。您已将控制器设置为“YourFeedback”,并将操作设置为“索引”。这意味着如果你想匹配那条路线,你必须在你的actionlink中设置它。
要匹配路线,您必须使用此动作链接:
<%=Html.ActionLink("Your Feedback", "Index", "YourFeedback", new
{
resourceId = Model.ContentId.ResourceId
}, new { @class = "yourFeedback" })%>
或改变路线。