ASP.Net MVC Синхронизация имен параметров и имен аргументов действий - PullRequest
1 голос
/ 09 июля 2010

Я заметил шаблон, который может усложнить рефакторинг приложений 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 ]

1 голос
/ 09 июля 2010

Вы можете использовать T4MVC для генерации строго типизированных ссылок на вещи, которые обычно представлены в виде строк в обычном MVC, например:

<% Html.ActionLink("List", MVC.Home.Directory("somePath")) %>

Вы можете узнать больше о T4MVC и скачать его здесь: http://mvccontrib.codeplex.com/wikipage?title=T4MVC

1 голос
/ 09 июля 2010

Вы можете использовать лямбда-версию ActionLink

 <% Html.ActionLink<HomeController>(a => a.Index(), "Home");  %>

, что даст вам проверку времени компиляции и строгую типизацию.

...