Url路由规则冲突
本文关键字:冲突 规则 路由 Url | 更新日期: 2023-09-27 18:07:28
我在我的asp.net应用程序中实现URL路由,因为我的一些规则是冲突的。以下是我的一些相互冲突的规则:
RouteTable.Routes.Add("QuestionSubject",
new Route("questions/{subjectname}/{pageno}",
new RouteValueDictionary { { "pageno", null } },
new RouteValueDictionary { { "pageno", @"^[0-9]*$" } },
new EventRouteHandler("~/questionsitemap/subject.aspx")));
RouteTable.Routes.Add("QuestionSubjectTopic",
new Route("questions/{subjectname}/{topicname}/{pageno}",
new RouteValueDictionary { { "pageno", null } },
new RouteValueDictionary { { "pageno", @"^[0-9]*$" } },
new EventRouteHandler("~/questionsitemap/topic.aspx")));
RouteTable.Routes.Add("QuestionGrade",
new Route("questions/{gradename}/",
new EventRouteHandler("~/questionsitemap/grade.aspx")));
RouteTable.Routes.Add("QuestionSubjectGrade",
new Route("questions/{gradename}/{subjectname}/",
new EventRouteHandler("~/questionsitemap/grade.aspx")));
RouteTable.Routes.Add("QuestionSubjectTopicGrade",
new Route("questions/{gradename}/{subjectname}/{topicname}/",
new EventRouteHandler("~/questionsitemap/grade.aspx")));
当我请求打开QuestionGrade规则时,它正在调用QuestionSubject,因为两者的规则是相似的,同样发生在其他人的规则。
有没有人能帮我找出解决这个问题的办法
您需要使它们更具体,因为路由引擎无法区分{subjectname}
和{gradename}
。您是否可以使用类似以下的东西,将/subject/
和/grade/
添加到您的路由中?
RouteTable.Routes.Add("QuestionSubject",
new Route("questions/subject/{subjectname}/{pageno}",
new RouteValueDictionary { { "pageno", null } },
new RouteValueDictionary { { "pageno", @"^[0-9]*$" } },
new EventRouteHandler("~/questionsitemap/subject.aspx")));
RouteTable.Routes.Add("QuestionGrade",
new Route("questions/grade/{gradename}/",
new EventRouteHandler("~/questionsitemap/grade.aspx")));