如果文件名包含点,则找不到MVC Razor视图

时间:2013-04-05 09:19:28

标签: asp.net-mvc razor http-status-code-404 asp.net-mvc-partialview

我在访问路线时遇到问题,如果它包含一个点。要进行复制,请创建默认的MVC4 WebApi应用程序。采取默认路线...

routes.MapRoute(
   name: "Default",
   url: "{controller}/{action}/{id}",
   defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

按如下方式编写控制器......

public class HomeController : Controller
{
   public ActionResult Index(string id)
   {
      if (id == null)
      {
         return View();
      }
      else
      {
         return PartialView(id);
      }
   }
}

并在现有的“index.cshtml”旁边创建两个文件“test.cshtml”和“test.menu.cshtml”。

打开/ home / index / test按预期工作。它带回了“test.cshtml”的内容。

但是,打开/home/index/test.menu会返回404错误。

为什么会这样?怎么可以避免呢?

1 个答案:

答案 0 :(得分:3)

您看到的404错误来自IIS。用于MVC路由的模块永远无法控制。

将以下选项添加到modules<system.webServer>部分的web.config部分将确保尝试MVC路由并解决您的问题:

runAllManagedModulesForAllRequests="true"

在我的web.config中没有现有的modules部分,因此我将以下行添加到<system.webServer>部分:

<modules runAllManagedModulesForAllRequests="true" />

现在它适用于我。