对于我们的web应用程序,我需要根据视图-或者更准确地说-生成视图的控制器和操作(当然还有用户id,但这不是这里的重点)保存获取和显示的项的顺序。
与其自己在每个控制器操作中给出一个标识符(以便使用它对DB输出进行一些与视图相关的排序),我认为从从中调用它的控制器和操作方法自动创建这个标识符会更安全、更容易。
如何从控制器的action方法中获取控制器的名称和操作?或者,我需要反射吗?
发布于 2013-08-15 16:06:51
string actionName = this.ControllerContext.RouteData.Values["action"].ToString();
string controllerName = this.ControllerContext.RouteData.Values["controller"].ToString();
发布于 2014-10-04 02:20:32
下面是一些用于获取该信息的扩展方法(还包括ID):
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;
}
}
用法:
@Html.Controller();
@Html.Action();
@Html.Id();
发布于 2014-02-06 02:52:50
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();
}
}
https://stackoverflow.com/questions/18248547
复制相似问题