【问题标题】:MVC Razor View not found if filename contains a dot如果文件名包含点,则找不到 MVC Razor View
【发布时间】:2013-03-27 15:28:42
【问题描述】:

如果路线包含点,我在访问路线时遇到问题。为了重现,创建一个默认的 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 错误。

为什么会这样?又该如何避免呢?

【问题讨论】:

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


    【解决方案1】:

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

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

    runAllManagedModulesForAllRequests="true"

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

    <modules runAllManagedModulesForAllRequests="true" />

    现在它对我有用。

    【讨论】:

    • 谢谢。这行得通。但是,在阅读了此设置后,可能会出现性能问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 2021-10-27
    • 2016-06-08
    • 2020-01-24
    • 2018-02-28
    • 2021-03-30
    相关资源
    最近更新 更多