2011-08-22 70 views
-1

即使對於沒有擴展名的路徑,我如何確保調用自定義虛擬路徑提供程序?未調用擴展路徑的自定義虛擬路徑提供程序

例如,如果我這樣做,在我的控制器,不執行我的供應商:

return View("Home"); 

但如果我這樣做,它被稱爲:

return View("Home.cshtml"); 

回答

0

我結束了添加自定義路徑引擎被啓用,現在一切似乎是工作

>   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()); 
1

哪個版本的IIS的是你使用?您是否使用VirtualPathProviderMVC路由?

您需要確保您在經典模式下在II6或II7中有通配符映射。

這個article應該可以幫助你展示如何在不同版本的IIS中使用。除非請求被路由到ASP.NET,否則您的代碼將不會被調用,IIS將僅返回404

在IIS7.5中,您可以嘗試添加以下配置。這是通配符映射的等效,並應在默認情況下在.NET 4

<system.webServer>  
    <modules runAllManagedModulesForAllRequests="true">  
    </modules>  
</system.webServer> 
+0

具有iis 7.5集成管道的VirtualPathProvider。 – jjxtra