与操作方法关联的查看名称可能不同



我正在读一本书,说:

"如果在ViewResult对象中未指定视图名称,则将使用路由数据中的操作变量值。对于大多数控制器,这意味着将使用该方法的名称,因此与索引方法关联的默认视图文件是index.cshtml。但是,如果您使用了路由属性,则与操作方法关联的视图名称可能有所不同。"

但是我做了一些测试,例如:

[Route("[controller]/MyAction")]
public ViewResult Index()
{
   string s = RouteData.Values["action"];
   return View();
}

因此,字符串s是"索引",它与动作方法名称相同,因此与动作方法关联的视图名称可能不同?

对于ViewName,它由ActionName

控制

作为属性路由

上面的路由模板没有定义行动的路由参数, 区域和控制器。实际上,这些路由参数不允许 在属性路由中。由于路由模板已经关联 采取行动,从中解析动作名称是没有意义的 URL。

路由属性不会影响动作名称,然后不会影响视图选择。

如果您想通过动作名称更改视图名称,则可以尝试使用ActionName

[ActionName("TestViewAction")]
public IActionResult TestView()
{
    string view = RouteData.Values["action"].ToString();
    return View();
}

最新更新