如何在Asp.net MVC中更改控制器和操作显示名称

时间:2014-02-18 10:00:22

标签: asp.net-mvc breadcrumbs

我用来显示控制器和动作名称,如下所示,用于我的Views-BreadCrumb

@ViewContext.RouteData.Values["Controller"] / @ViewContext.RouteData.Values["Action"]

此查询的输出为

HrMapPersonCertificate / Create

但我想为控制器显示不同的名称。 IE:认证/新证书

我可以更改动作和控制器的显示名称吗?

已编辑

实际上我的解决方案有些问题。我做了你说的但是ie。在我的Person模型中,现在它有两个变量,即route1和route2。 Route1 =“人员信息”,Route2 =“行动名称:查看人员”。但是我在使用此模型进行editind或插入时也使用相同的视图。我遇到了麻烦。

1 个答案:

答案 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属性。