ASP.Net MVC保持参数名称和操作参数名称同步

时间:2010-07-08 23:14:25

标签: c# asp.net-mvc asp.net-mvc-2 resharper static-analysis

我注意到一种模式可能会使重构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有一个指示,如果一个动作或视图不存在。我想它可以很容易地检测参数命名冲突。

2 个答案:

答案 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