c# - 如何从 ASP.NET MVC 中的不同 Controller 和操作呈现的 Html.Action 中检索 Controller 和操作名称

标签 c# asp.net asp.net-mvc

我在 ASP.NET MVC 中检索 Controller 和操作名称时遇到问题。以下是我的场景。

第一步:

我正在我的布局页面中呈现 Html.Action("sidebar","Helper")。所以 Controller 和 Action 应该是这样的。

第 2 步:

我正在尝试将当前 Controller 名称和操作名称传递给侧边栏 View 的 View 。例如,如果我在 HomeController, Controller 名称将是“Home”而不是“Helper”,因为 HelperController 在布局页面中并且包含在每个页面中。我正在尝试按照步骤 3 中的方式检索名称。

步骤 3

public class HelperController:Controller{
    public PartialViewResult sidebar()
    {
       string con_action = ControllerContext.RouteData.Values["controller"].ToString()+"-"+ControllerContext.RouteData.Vaues["action"].ToString();
    }
}

我的问题:它一直返回 Controller 名称“Helper”和操作名称“sidebar”,即使我导航到 HomeController 的 Index 操作也是如此。我该如何解决这个问题?

最佳答案

你可以像这样在布局页面中将当前 Controller 名称和 Action 名称作为参数传递

@Html.Action("sidebar", "Helper", new { thisController = ViewContext.RouteData.Values["controller"].ToString(), thisAction = ViewContext.RouteData.Values["action"].ToString() })

然后在 Helper Controller 中访问它们

    public class HelperController:Controller{
            public PartialViewResult sidebar(string thisController, string thisAction)
            {
               string con_action = thisController + "-" + thisAction;
               ...
            }
        }

关于c# - 如何从 ASP.NET MVC 中的不同 Controller 和操作呈现的 Html.Action 中检索 Controller 和操作名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32602574/

相关文章:

html - 为什么 ASP.NET Core 应用程序未在同一域中的 iframe 中加载?

c# - dropdownlist SelectedIndexChanged 在按钮单击时触发(如果它们具有相同的值)

c# - 如何在 C# 的嵌入式 Web 浏览器中允许被阻止的内容?

c# - 尝试突出显示 C# TextBox 时的不一致行为

html - DIV 内的 CSS 定位

javascript - 使用 Javascript/jQuery 动态填充下拉列表

c# - 我可以将 AsyncLocal 与 azure 函数一起使用吗?

javascript - ASP 语句中的多个 "

c# - LINQ 查询无法评估 StartsWith 中的 GET 参数

c# - 如何访问 ASP.NET Core 服务中的路由数据/值提供程序数据?