首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从控制器中获取控制器和操作名称?

从控制器中获取控制器和操作名称?
EN

Stack Overflow用户
提问于 2013-08-15 16:03:16
回答 10查看 233.1K关注 0票数 194

对于我们的web应用程序,我需要根据视图-或者更准确地说-生成视图的控制器和操作(当然还有用户id,但这不是这里的重点)保存获取和显示的项的顺序。

与其自己在每个控制器操作中给出一个标识符(以便使用它对DB输出进行一些与视图相关的排序),我认为从从中调用它的控制器和操作方法自动创建这个标识符会更安全、更容易。

如何从控制器的action方法中获取控制器的名称和操作?或者,我需要反射吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-08-15 16:06:51

代码语言:javascript
复制
string actionName = this.ControllerContext.RouteData.Values["action"].ToString();
string controllerName = this.ControllerContext.RouteData.Values["controller"].ToString();
票数 371
EN

Stack Overflow用户

发布于 2014-10-04 02:20:32

下面是一些用于获取该信息的扩展方法(还包括ID):

代码语言:javascript
复制
public static class HtmlRequestHelper
{
    public static string Id(this HtmlHelper htmlHelper)
    {
        var routeValues = HttpContext.Current.Request.RequestContext.RouteData.Values;

        if (routeValues.ContainsKey("id"))
            return (string)routeValues["id"];
        else if (HttpContext.Current.Request.QueryString.AllKeys.Contains("id"))
            return HttpContext.Current.Request.QueryString["id"];

        return string.Empty;
    }

    public static string Controller(this HtmlHelper htmlHelper)
    {
        var routeValues = HttpContext.Current.Request.RequestContext.RouteData.Values;

        if (routeValues.ContainsKey("controller"))
            return (string)routeValues["controller"];

        return string.Empty;
    }

    public static string Action(this HtmlHelper htmlHelper)
    {
        var routeValues = HttpContext.Current.Request.RequestContext.RouteData.Values;

        if (routeValues.ContainsKey("action"))
            return (string)routeValues["action"];

        return string.Empty;
    }
}

用法:

代码语言:javascript
复制
@Html.Controller();
@Html.Action();
@Html.Id();
票数 71
EN

Stack Overflow用户

发布于 2014-02-06 02:52:50

代码语言:javascript
复制
var routeValues = HttpContext.Current.Request.RequestContext.RouteData.Values;
if (routeValues != null) 
{
    if (routeValues.ContainsKey("action"))
    {
        var actionName = routeValues["action"].ToString();
                }
    if (routeValues.ContainsKey("controller"))
    {
        var controllerName = routeValues["controller"].ToString();
    }
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18248547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档