ASP.net MVC 5路由有两个参数

时间:2015-06-19 12:14:32

标签: asp.net asp.net-mvc

我想创建带有2个参数的Web应用程序。将此代码添加到 RegisterRoutes 功能:

routes.MapRoute(
               "pageroute",                                              
               "page/{pageid}/{pagename}",                          
               new { controller = "page", action = "Index", pageid = "", pagename = "" } 
           );

并在 pageController

中添加此方法
  public ActionResult Index(int pageid,string pagename)
        {
            return View();
        }

现在我使用此参数运行应用程序

http://localhost:1196/page/4/Pagename

应用程序成功运行但使用此参数运行时

http://localhost:1196/page/4/Pagename.html

应用程序返回404错误

HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

在参数返回404错误中添加.html。的为什么吗

2 个答案:

答案 0 :(得分:1)

因为默认情况下不通过MVC / IIS提供HTML文件。

您的应用会查找名为 Pagename.html 物理文件,但无法在那里找到它。因此 - 404。

要使其正常工作,您需要设置IIS以捕获带有HTML扩展名的文件请求,并将此请求传递给MVC。

编辑:Here是一个类似的问题,其中OP通过切换管理管道模式"来找到解决方案。到"经典"。

答案 1 :(得分:0)

尝试将路线更改为:

routes.MapRoute(
           "pageroute",                                              
           "page/{pageid}/{*pagename}",                          
           new { controller = "page", action = "Index", pageid = "", pagename = "" } 
       );

这将匹配page/1/*中的所有内容,因此.html应通过此路线。

我无法重现.html文件使用与问题类似的方案给出404的问题,因此可能存在其他路由问题或IIS配置导致此问题。