2014-02-18 62 views
0

我使用顯示如下控制器和動作名稱在我的使用次數,麪包屑如何更改控制器和動作顯示名稱在Asp.net MVC

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

這個查詢的輸出是

HrMapPersonCertificate/Create 

但我想爲控制器顯示不同的名稱。 IE:認證/新證書

我可以更改操作和控制器的顯示名稱嗎?

EDITED

其實我有一些麻煩,您的解決方案。我做了你所說的,但即。在我的Person模型中,現在它有兩個變量,route1和route2。 Route1 =「個人信息」,Route2 =「操作名稱:查看人員」。但是,在editind或使用此模型插入時,我也使用相同的視圖。我有麻煩了。

回答

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,只需將其定義更改爲​​,然後即可使用BaseModel屬性。

+0

但我無法在視圖中傳遞2個模型。我在每個視圖中都使用這個基類。做這個的最好方式是什麼 ? ViewModel? – umki

+0

爲什麼你不能將模型傳遞給你的視圖?你可以閱讀這篇文章[這篇博客文章](http://weblogs.asp.net/scottgu/archive/2010/10/19/asp-net-mvc-3-new-model-directive-support-in -razor.aspx)。 –

+0

不,我說只能有一個模型通過我的觀點 – umki

相關問題