Url Routing Rule конфликтует - PullRequest
       6

Url Routing Rule конфликтует

2 голосов
/ 02 сентября 2011

Я реализую маршрутизацию URL в моем приложении asp.net, поскольку некоторые мои правила противоречат друг другу. ниже приведены некоторые правила, которые противоречат друг другу:

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 , поскольку правила одинаковы для обоих, то же самое произошло для правила других.

Пожалуйста, помогите мне найти решение для этого.

1 Ответ

1 голос
/ 02 сентября 2011

Вам нужно будет сделать их более конкретными, так как механизм маршрутизации не может различить {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")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...