Как делает HtmlHelper. ActionLink (htmlhelper, представьте linktext в виде строки, представьте действие в виде строки), выясняет правильный маршрут?
Если у меня есть это =>
HtmlHelper.ActionLink("Edit","Edit")
Mvc автоматически узнает правильный маршрут.
т.е. - если контроллер был продуктом, он представит привязку с href product/edit
.
Таким образом - как выяснить, контроллер называет, когда я получил htmlHelper + комбинация имени действия?
Если ваш HtmlHelper выглядит как:
public static string MyHelper(this HtmlHelper htmlHelper,
... some more parameters ...) {
return ... some stuff ...
}
Тогда от вашего помощника обратитесь:
RouteData routeData = htmlHelper.ViewContext.RouteData;
string controller = routeData.GetRequiredString("controller");
Объект RouteData содержит все значения, которые были обработаны ASP.NET Routing для текущего запроса. Сюда будут включены имена параметров и значения из маршрута, такие как "{controller}/{action}/{id}". Многие из встроенных помощников ASP.NET MVC получают оттуда "окружающие" данные, чтобы разработчику не приходилось вводить их для каждого используемого помощника.
Полный исходный код можно также скачать в ASP.NET MVC отсюда: