我注意到一种模式可能会使重构MVC2应用程序变得困难。更改操作的参数名称时,必须更新使用操作的所有值。例如,
public ActionResult List(string p)
视图中的
<%= Html.ActionLink("List", "Directory", new { p = "somePath" }, null) %>
如果我想将p更改为更具描述性的内容,例如path。
,该怎么办?public ActionResult List(string path)
这意味着在我指定p =“somePath”的视图中的任何地方都必须将其更改为path =“somePath”。我认为这跟踪和维护是乏味的。
对此的静态分析似乎是保持参数和参数一致的正确解决方案。我知道resharper有一个指示,如果一个动作或视图不存在。我想它可以很容易地检测参数命名冲突。
答案 0 :(得分:1)
您可以使用Lambda版本的ActionLink
<% Html.ActionLink<HomeController>(a => a.Index(), "Home"); %>
将为您提供编译时检查和强类型。
答案 1 :(得分:1)
您可以使用T4MVC生成对常规MVC中通常表示为字符串的内容的强类型引用,例如:
<% Html.ActionLink("List", MVC.Home.Directory("somePath")) %>
您可以阅读有关T4MVC的更多信息并从此处下载:http://mvccontrib.codeplex.com/wikipage?title=T4MVC