ASP.Net MVC Action方法编译Razor cshtml文件中的时间错误

时间:2013-01-16 13:31:18

标签: asp.net-mvc razor asp.net-mvc-4

e如果控制器中的操作方法无法通过Html.Action使用,有没有办法可以产生编译时错误?

例如,假设我们有一个名为LayoutMainPartialViewsController的控制器,在这样的控制器中,我们有一个方法Header,它输出位于/Views/Shared/PartialViews/_Header.cshtml

public class LayoutMainPartialViewsController : Controller
{
    //
    // GET: /LayoutMainPartialViews/

    public ActionResult Header()
    {
        return PartialView("/Views/Shared/PartialViews/_Header.cshtml");
    }

}

然后要包含这样的局部视图,我们会在Razor中调用

@Html.Action("Header", "LayoutMainPartialViews");

如果由于某种原因,名为Header的方法被重命名为Header2,则不会给出编译时错误,只会给出运行时错误。

我希望能够编译时错误,尽量减少运行时错误,因为它们更难以识别。

另一方面,打电话是否有意义?

@(new LayoutMainPartialViewsController().Header())

上述方法返回ActionResult,需要以Html.Action的方式转换为String。

这样,如果我们在csproj中将Header更改为Header2并拥有<MvcBuildViews>true</MvcBuildViews>,则会在编译时提供错误。

1 个答案:

答案 0 :(得分:1)

T4MVC是ASP.NET MVC应用程序的T4模板,可以创建强类型帮助程序,从而消除在许多地方使用文字字符串。

这完全符合我的要求,并删除了“魔术字符串”的用法。而不是强类型标识符。如果<MvcBuildViews>true</MvcBuildViews>设置为true,则即使在视图中也会提供编译时错误。

感谢@StuartLC的提示!