1

我想知道如何在 asp.net MVC 的 url 中有这样的东西

/文章/12.20.2013

我在下面尝试过,它适用于 /Article/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")};

但没有运气..

请用一些样本指导我。

4

2 回答 2

2

我认为问题在于 IIS 可能将“.2013”​​视为文件扩展名并试图为其查找处理程序。我们需要做的是让 MVC 处理所有请求。

如果您使用的是 IIS 6,则需要将通配符映射到aspnet_isapi.dll. 如果您使用的是 IIS 7,则可以设置runAllManagedModulesForAllRequests="true"

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
    </modules>
</system.webServer> 
于 2013-08-09T05:25:16.240 回答
0

您需要更改 web.config 以强制每个以开头的 urlArticle 被视为 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>

那么您的路由应该可以正常工作。

于 2013-08-09T04:40:02.240 回答