我想在我的母版页中设置一个CSS类,这取决于当前控制器和动作。我可以通过ViewContext.Controller.GetType()访问当前控制器。名称,但我如何得到当前的行动(如索引,显示等)?
当前回答
我投票给这个2:
string currentActionName = ViewContext.RouteData.GetRequiredString("action");
and
string currentViewName = ((WebFormView)ViewContext.View).ViewPath;
您可以检索当前视图的物理名称和触发该视图的操作。它可以在partial *中使用。Acmx页来确定主机容器。
其他回答
我投票给这个2:
string currentActionName = ViewContext.RouteData.GetRequiredString("action");
and
string currentViewName = ((WebFormView)ViewContext.View).ViewPath;
您可以检索当前视图的物理名称和触发该视图的操作。它可以在partial *中使用。Acmx页来确定主机容器。
在MVC中,你应该为视图提供所有的数据,而不是让视图收集自己的数据,所以你能做的就是在你的控制器动作中设置CSS类。
ViewData["CssClass"] = "bold";
并从视图中的ViewData中选取这个值
使用ViewContext并查看RouteData集合以提取控制器和操作元素。但是我认为设置一些数据变量来指示应用程序上下文(例如,“editmode”或“error”)而不是控制器/动作减少了视图和控制器之间的耦合。
你可以从ViewContext的RouteData中获取这些数据
ViewContext.RouteData.Values["controller"]
ViewContext.RouteData.Values["action"]
我使用ASP。NET MVC 4,这是为我工作:
ControllerContext.Controller.ValueProvider.GetValue("controller").RawValue
ControllerContext.Controller.ValueProvider.GetValue("action").RawValue
推荐文章
- .NET中的Map和Reduce
- 我如何能使一个组合框不可编辑的。net ?
- 在ASP中实现请求节流的最佳方法。净MVC吗?
- .NET反射的成本有多高?
- 实体框架回滚并移除不良迁移
- 将流转换为字符串并返回
- 在c#中检查字符串是否只包含数字的最快方法
- IEquatable和重写Object.Equals()之间的区别是什么?
- 创建一个堆栈大小为默认值50倍的线程有什么危险?
- 转换JSON字符串到JSON对象c#
- 显示两个datetime值之间的小时差值
- 如何设置enum为空
- 选择Enum类型的默认值而无需更改值
- 我如何设置在一个组合框中选择的项目,以匹配我的字符串使用c# ?
- String与StringBuilder