ASP.NET MVC和字符串不会在编译时出现错误

4

我是一个编译错误的忠实拥护者。相比运行时错误,我发现编译错误更容易修复。我目前使用ASP.NET MVC框架,我发现它有很多错别字的空间,编译器无法捕捉到。

例如,如果我想从Index操作返回视图Data

public ActionResult Index()
{
   return View("Data");
}

容易打错

public ActionResult Index()
{
   return View("Dats");
}

只有当我运行那个动作时,才会显示错误。

有没有人想出一种在编译时检查这些问题的方法? 我想出了两种可能的解决方案:

  • 创建一个静态类,将所有动作名称定义为常量,并将其用于视图名称。我会制定一个编码规则,规定只使用常量。但这种方法的弱点是如果我更改一个视图名称,则必须更新该类。
  • 编写大量单元测试,以确保每个控制器动作都返回有效的ActionResult ,并在进行更改时运行这些测试。

您们实施了什么流程来帮助管理此风险? 有没有任何附加组件或框架可以缓解此问题?


R# 5可以帮助您解决这个问题。它不会给您一个错误(可能可以通过某种方式进行配置),但是您将直接看到是否存在具有该名称的视图(您将获得下划线)。如果您使用Url.Action()的字符串版本或任何其他内置助手,它也会执行相同的操作。 - Mattias Jakobsson
1个回答

4

MvcContrib中的T4MVC项目旨在解决此问题。根据文档:

T4MVC是用于ASP.NET MVC应用程序的T4模板,可创建强类型助手,以消除引用控制器、操作和视图时使用的文本字符串。它有助于使您的MVC代码更易维护,并提供智能感知功能。


它能与Visual Studio的Express版本一起使用吗? - C. Ross

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接