2013-08-09 2 views
1

Я хочу знать, как иметь что-то подобное в URL в ASP.NET MVCшаблон URL маршрутизации MVC 3

/Article/12.20.2013

Я попытался ниже и его работает отлично для/статьи/12-20-2013, но не для /Article/12.20.2013. У меня есть ниже в Global.asax

routes.MapPageRoute("Blog", 
    "/Article/{entryDate}", 
    new {controller = "Article", action = "Entry")}; 

Я также попытался что-то вроде ниже

routes.MapPageRoute("Blog", 
    "/Article/{month}.{Date}.{year}", 
    new {controller = "Article", action = "Entry")}; 

, но не повезло ..

Пожалуйста, наставит меня с некоторым образцом.

+0

Любой шанс, что вы находитесь на IIS6? –

+0

Вам следует рассмотреть возможность использования первого шаблона/статьи/12-20-2013, поскольку ваш маршрут с настройкой RunAllManagedModulesForAllRequests = «true» не рекомендуется, так как он добавляет дополнительные накладные расходы, выполняя запросы на статические файлы, такие как .html и .jpeg через ASP. NET. См. [Маршрутизация ASP.NET] (http://msdn.microsoft.com/en-us/library/vstudio/cc668201%28v=vs.100%29.aspx#configuration_settings_for_routing) –

+0

+1 Я не знал об этом. Полезно знать, что еще раз спасибо Anthony –

ответ

2

Я считаю, что проблема заключается в том, что IIS может обрабатывать «.2013» в качестве расширения файла и пытается найти обработчик для него. Нам нужно сделать, чтобы MVC обрабатывал все запросы.

Если вы используете IIS 6, вам нужно будет сделать сопоставление подстановочных знаков на aspnet_isapi.dll. Если вы находитесь на IIS 7, вы можете установить runAllManagedModulesForAllRequests="true":

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
    </modules> 
</system.webServer> 
+0

Его работала как шарм. Спасибо –

+0

+1 за ответ , можете ли вы рассказать, можно ли это сделать для определенных представлений диспетчера? –

0

Вам нужно изменить web.config, чтобы заставить каждый URL, начиная с Article следует рассматривать как MVC URL

<system.webServer>  
    <handlers>  
    <add name="UrlRoutingHandler" 
     type="System.Web.Routing.UrlRoutingHandler, 
       System.Web, Version=4.0.0.0, 
       Culture=neutral, 
       PublicKeyToken=b03f5f7f11d50a3a" 
     path="/Article/*" 
     verb="GET"/>  
    </handlers> 
</system.webServer> 

Тогда ваша маршрутизация должна работать нормально.

+0

Уже сделано, но всякий раз, когда я пробовал /Article/12.20.2013, он терпит неудачу, когда как/Article/12-20-2013 работал нормально –

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