asp.net-core-mvc - 与操作方法关联的视图名称可能不同
问题描述
我在看一本书,上面写着:
“如果 ViewResult 对象中没有指定视图名称,则将使用路由数据中的动作变量的值。对于大多数控制器,这意味着将使用方法的名称,以便关联默认视图文件Index 方法是 Index.cshtml。但是,如果您使用了 Route 属性,那么与操作方法关联的视图名称可能会有所不同。
但我做了一些测试,比如:
[Route("[controller]/MyAction")]
public ViewResult Index()
{
string s = RouteData.Values["action"];
return View();
}
所以 string s 是 "Index",和 action 方法名一样,那么与 action 方法关联的视图名怎么可能不同呢?
解决方案
对于 ViewName,它由ActionName
.
作为属性路由
上面的路由模板没有定义动作、区域和控制器的路由参数。事实上,这些路由参数在属性路由中是不允许的。由于路由模板已经与动作相关联,因此从 URL 中解析动作名称是没有意义的。
Route Attribute 不会影响动作名称,也就不会影响视图选择。
如果您想通过操作名称更改视图名称,您可以ActionName
尝试
[ActionName("TestViewAction")]
public IActionResult TestView()
{
string view = RouteData.Values["action"].ToString();
return View();
}
推荐阅读
- python - Tensorflow 自定义估计器恢复模型太多次
- exception-handling - ServiceStack 服务网关抛出 AggregateException 而不是 WebServiceException
- laravel - 以非递归方式将 Laravel 集合转换为数组
- intellij-idea - Custom notification in Intellij reacting to string in console
- c# - 无法使用 DirectoryEntry(LAPS 属性)获取 AD 属性
- postgresql - 通过索引数据优化 Postgres 查询
- caffe - NVCC src/caffe/layers/elu_layer.cu nvcc 致命:未知选项'fPIC' Makefile:607
- python - 如何使用 python3 循环读取文件 N 行并 POST 到服务器
- python - 检测哪个按键
- mysql - 如何在php中计算每个用户的消息数