Перемещен с предварительного просмотра 2 на предварительный просмотр 5, и теперь все мои вызовы Html.ActionLink не работают. Похоже, что общая версия была заменена небезопасной версией.
// used to work
<li>
<%= Html.ActionLink<HomeController>(c => c.Index(), "Home")%>
</li>
// what appears I can only do now
<li>
<%= Html.ActionLink<HomeController>("Index", "Home")%>
</li>
Почему Гу сделал это? Он был перенесен в Microsoft.Web.Mvc или куда-то еще в качестве «будущего»? Есть ли универсальная замена? Халп!





Не вините ГУ, это моя вина. Этот метод перенесен в MvcFutures. Вот сообщение в блоге, в котором объясняется, почему было внесено это изменение.
Нет, потому что этот атрибут можно применять динамически, а не непосредственно к методу.
Не говоря уже о том, что есть другие точки расширяемости, которые могут изменить имя действия после выбора метода.
Разве нельзя было бы иметь «интерфейс действий», подобный интерфейсу, который определял бы действия, доступные интерфейсным способом, который затем можно было бы использовать для обеспечения безопасного по типу способа доступа к действиям. Затем при запуске контроллер Concerete может быть назначен реализацией интерфейса, чтобы у вас была гибкость, которую вы описываете, так как метод не обязательно является действием, но по-прежнему имеет возможность использовать типобезопасные ActionLinks и RenderActions. Тогда VS или Resharper могут предупредить вас (а не об ошибке), если интерфейс действия не реализован.
Ааоу, давай. Как будто вы не можете проверить метод, вызываемый в выражении, чтобы увидеть, есть ли на нем ActionNameAttribute.