我用来显示控制器和动作名称,如下所示,用于我的Views-BreadCrumb
@ViewContext.RouteData.Values["Controller"] / @ViewContext.RouteData.Values["Action"]
此查询的输出为
HrMapPersonCertificate / Create
但我想为控制器显示不同的名称。 IE:认证/新证书
我可以更改动作和控制器的显示名称吗?
已编辑
实际上我的解决方案有些问题。我做了你说的但是ie。在我的Person模型中,现在它有两个变量,即route1和route2。 Route1 =“人员信息”,Route2 =“行动名称:查看人员”。但是我在使用此模型进行editind或插入时也使用相同的视图。我遇到了麻烦。
答案 0 :(得分:1)
您不应使用控制器和操作的内部名称来显示网站上的路由。这会使事情在视图方面难以维护和自定义(正如您可以在此问题中看到的那样)并且不恰当地将服务器端的元数据与表示级别混合。
更好的方法是创建一个始终包含您要在路线中显示的值的BaseModel
对象:
public class BaseModel
{
public string Route1 {get; set;}
public string Route2 {get; set;}
}
设置显然可以改变 - 您可以使用不同的名称甚至List<string>
名称来存储两个以上的名称,但我们的想法是不要将控制器和操作名称硬编码到视图中。
然后使用将此模型传递到每个视图,并使用这些值来显示您的路线。
@model BaseModel
...
@Model.Route1 / @Model.Route2
您传递到网站上使用此布局的每个视图的每个模型都应继承自BaseModel
。因此,这些属性可用于每个视图。因此,如果您在给定页面上的当前模型被称为MyModel
,只需将其定义更改为public class MyModel : BaseModel
,然后您也可以使用BaseModel
属性。