如何在其他控制器的控制器动作中传递控制器名称?

时间:2012-12-17 10:55:43

标签: asp.net-mvc controller controller-action

我有一个SQL查询,我想将控制器名称作为where子句比较参数之一传递。应用程序中有许多控制器。根据控制器名称,将执行不同的查询结果。那么如何将控制器的名称传递给第三个控制器。

使用此@ViewContext.RouteData.Values["controller"],我可以获得控制器的名称,但仅限于该控制器的视图内。那么如何在另一个控制器动作方法中实现呢。

1 个答案:

答案 0 :(得分:1)

如何将值传递给ASP MVC中的action方法有几种方法。这取决于请求的类型。

GET请求示例

// navigation to action
@Html.ActionLink("link","myAction","otherCon", new {controllerNamePar = ViewContext.RouteData.Values["controller"]}

// render result of action into current view
@{Html.RenderAction("myAction","otherCon", new {controllerNamePar = ViewContext.RouteData.Values["controller"]}}

controllerNamePar将作为网址中的查询字符串发送。

POST请求示例

@using (Html.BeginForm("MyAction", "OtherCon", FormMethod.Post))
{
    @Html.Hidden("controllerNamePar", ViewContext.RouteData.Values["controller"])
    <input type="submit" value="OK" />
}

controllerNamePar将作为html表单的一部分发送。