【问题标题】:Given htmlHelper + action name, how to figure out controller name?给定 htmlHelper + 动作名称,如何找出控制器名称?
【发布时间】:2010-12-31 16:57:27
【问题描述】:

HtmlHelper.ActionLink(htmlhelper,string linktext,string action) 如何找出正确的路径?

如果我有这个=>

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    如果你的 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

    【讨论】:

    • 以前见过/使用过这个。刚弄糊涂了。谢谢。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多