我想構建一種在運行時覆蓋ASP.NET MVC視圖的方法。基本想法是有MyView.cshtml和和可選MyView.Override.cshtml。一旦MyView.Override.cshtml存在於磁盤上,它將被用來代替原始視圖。使用File.Exists()檢查視圖是否存在於磁盤上
我試圖做的是:
protected new ActionResult View(string viewName)
{
var overridePath = viewName.Replace(".cshtml", ".Override.cshtml"); // i.e. ~/Views/MyView.Override.cshtml
if (System.IO.File.Exists(Server.MapPath(overridePath)))
{
return base.View(overridePath); // use override
}
return base.View(viewName); // use default
}
這基本上工作。我的問題:在解析視圖時,使用File.Exists()是否是好習慣?這是否會引入任何問題(靈活性,性能)?我錯過了一種標準的MVC方式來做同樣的事情嗎?
正是我需要的!謝謝。 此外,顯示模式提供程序似乎有一個更聰明的方法來檢查文件是否存在,通過在應用程序啓動時執行而不是每次解析視圖時都存在。 –