e如果操作方法在控制器中不可用,通過使用Html.Action
,有沒有什麼辦法可以產生編譯時錯誤?ASP.Net MVC操作方法在Razor cshtml文件中編譯時間錯誤
例如,讓我們說,我們有一個名爲LayoutMainPartialViewsController
控制器和這種控制器內,我們有其輸出位於/Views/Shared/PartialViews/_Header.cshtml
public class LayoutMainPartialViewsController : Controller
{
//
// GET: /LayoutMainPartialViews/
public ActionResult Header()
{
return PartialView("/Views/Shared/PartialViews/_Header.cshtml");
}
}
然後爲包括這樣的局部視圖頁眉局部視圖的方法Header
,如果由於某種原因,命名爲Header
方法被重命名爲Header2
我們會內剃刀
@Html.Action("Header", "LayoutMainPartialViews");
打電話,沒有給出編譯時錯誤,但只有運行時錯誤。
我希望能夠編譯時錯誤,儘量減少運行時錯誤,因爲它們更難以識別。
在另一個說明,是否有意義稱之爲像?
@(new LayoutMainPartialViewsController().Header())
的方法,上述返回ActionResult
需要被轉換爲字符串的相同方式Html.Action
一樣。
這樣,如果我們將Header
更改爲Header2
,並在csproj中有<MvcBuildViews>true</MvcBuildViews>
,則編譯時會提供錯誤。
我構建了一個自定義工具,該工具執行靜態分析以查找控制器,然後使用映射到每個構建操作的字符串屬性構建一個新的靜態類型,然後使用該類型而不是字符串。如果某個操作被刪除或重命名,則在從該工具重建後會生成編譯時錯誤。我不知道這是否是您的選擇,但對於我的小型mvc3項目來說它確實可行。 – asawyer
@ Html.RenderPartial()是我用於渲染部分視圖的方法... –
查看[T4MVC](http://t4mvc.codeplex.com/)和[FluentHtml](http:// lunaverse。 wordpress.com/2009/02/05/eliminate-magic-strings-in-javascript-with-mvccontribfluenthtml/)消除魔法字符串。 – StuartLC