给定htmlHelper +动作名称,如何找出控制器名称?

时间:2010-01-02 01:13:38

标签: asp.net-mvc routing html-helper

HtmlHelper.ActionLink(htmlhelper,string linktext,string action)如何确定正确的路线?

如果我有这个=>

HtmlHelper.ActionLink("Edit","Edit")

Mvc会自动找出正确的路线。

即。 - 如果控制器是Product,它将使用href product/edit渲染锚点。

那么 - 当我得到htmlHelper +动作名称组合时如何计算控制器名称?

1 个答案:

答案 0 :(得分:15)

如果您的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:

  1. ASP.NET MVC 1.0 RTM source code
  2. ASP.NET MVC 2 Release Candidate source code