即使對於沒有擴展名的路徑,我如何確保調用自定義虛擬路徑提供程序?未調用擴展路徑的自定義虛擬路徑提供程序
例如,如果我這樣做,在我的控制器,不執行我的供應商:
return View("Home");
但如果我這樣做,它被稱爲:
return View("Home.cshtml");
即使對於沒有擴展名的路徑,我如何確保調用自定義虛擬路徑提供程序?未調用擴展路徑的自定義虛擬路徑提供程序
例如,如果我這樣做,在我的控制器,不執行我的供應商:
return View("Home");
但如果我這樣做,它被稱爲:
return View("Home.cshtml");
我結束了添加自定義路徑引擎被啓用,現在一切似乎是工作
> private class CustomViewEngine : RazorViewEngine
> {
> private static string[] NewPartialViewFormats = new[] {
> "~/Views/Shared/{0}.cshtml" };
>
> public CustomViewEngine()
> {
> base.PartialViewLocationFormats =
> base.PartialViewLocationFormats.Union(NewPartialViewFormats).ToArray();
> }
> }
中的Application_Start:
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomViewEngine());
哪個版本的IIS的是你使用?您是否使用VirtualPathProvider
或MVC
路由?
您需要確保您在經典模式下在II6或II7中有通配符映射。
這個article應該可以幫助你展示如何在不同版本的IIS中使用。除非請求被路由到ASP.NET,否則您的代碼將不會被調用,IIS將僅返回404
。
在IIS7.5中,您可以嘗試添加以下配置。這是通配符映射的等效,並應在默認情況下在.NET 4
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
</modules>
</system.webServer>
具有iis 7.5集成管道的VirtualPathProvider。 – jjxtra