2016-04-25 2 views
2

В моем демонстрационном приложении asp.net mvc я столкнулся с проблемой маршрутизации. i.e Методы действий с возвращаемыми типами, отличными от actionresult или его подкласса, не вызываются, если их определение маршрута не помещено как первое, так и перед другими определениями маршрутов. i.e методы действия с возвращаемыми типами как void/string/others и т. д. вызывается только в том случае, если их route.routemap размещены в начале. для бывшего, если у меня есть и методы действий говорятasp.net MVC порядок маршрутизации

public string method1() 
{ 
} 

внутри контроллер CONT1, то только тогда, когда я место кода маршрутизации

routecollection.maproute("route1","{controller}/{action}",new {controller="cont1",action="method1"} 

на первом перед другим routecollection.maproute он вызывался. иначе он не будет вызван. Пожалуйста, дайте мне знать причину этого.

+2

Поскольку первый соответствующий маршрут всегда выполняется (маршрут маршрута 1, который вы указали, совпадает с маршрутом «по умолчанию») –

+0

, поскольку @StephenMuecke говорит, что 1 соответствующий маршрут всегда выполнен, я не знаю, как вы размещаете свои маршруты , может быть, эта статья поможет вам http://www.codeproject.com/Articles/624181/Routing-Basics-in-ASP-NET-MVC – KanisXXX

+1

Хорошей практикой является возврат результата вашей строки, завернутый в объект ContentResult, который также решит вашу проблему маршрутизации. Подробное обсуждение этой проблемы [здесь] (http://stackoverflow.com/questions/18482293/asp-net-mvc-contentresult-vs-string). –

ответ

1

Конфигурация маршрута по умолчанию должна всегда находиться в конце конфигурации маршрута. Поскольку конфигурация маршрута будет анализироваться для соответствия конфигурации, она примет и направит этот путь. Поэтому, если вы укажете конфигурацию по умолчанию в начале, она всегда будет соответствовать и маршрутизироваться по этому пути.

Смежные вопросы