Я заметил шаблон, который может сделать рефакторинг приложениями MVC2 трудный. Когда Вы меняете имя аргумента в пользу действия, необходимо обновить значения везде, что действие используется. Например,
public ActionResult List(string p)
в представлении
<%= Html.ActionLink("List", "Directory", new { p = "somePath" }, null) %>
Что, если я хочу изменить p, чтобы быть более описательный, такие как путь.
public ActionResult List(string path)
Это будет означать, что везде в представлении, где я указал, p = "somePath" это должен быть изменен на путь = "somePath". Я вижу это как являющееся утомительным, чтобы отследить и поддержать.
Статический анализ этого, кажется, правильное решение для хранения аргументов и последовательных параметров. Я знаю, что resharper имеет признак, если действие или представление не существуют. Я предполагаю, что это могло столь же легко обнаружить конфликты имен параметра.
Вы можете использовать Lambda-версию ActionLink
<% Html.ActionLink<HomeController>(a => a.Index(), "Home"); %>
, которая предоставит вам проверку времени компиляции и строгую типизацию.
Вы можете использовать T4MVC для создания сильно типизированных ссылок на вещи, которые обычно представляются как строки в обычном MVC, например:
<% Html.ActionLink("List", MVC.Home.Directory("somePath")) %>
Вы можете прочитать больше о T4MVC и скачать его отсюда: http://mvccontrib.codeplex.com/wikipage?title=T4MVC