2014-02-18 2 views
0

Я использую, чтобы показать контроллера и действия имя, как показано ниже, чтобы использовать в своих видовые ИерархическаяКак изменить отображаемые имена контроллера и действия в ASP.Net MVC

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

Вывод этого запроса

HrMapPersonCertificate/Create 

Но я хочу показать другое имя для контроллеров. IE: Сертификация/Новый сертификат

Могу ли я изменить отображаемые названия действий и контроллеров?

EDITED

На самом деле у меня есть некоторые проблемы с вашим решением. Я сделал то, что вы сказали, но то есть. в моей модели Person, теперь она имеет еще две переменные, route1 и route2. Route1 = «Информация о персонале», Route2 = «Имя действия: View Person». Но я использую ту же точку зрения и при редактировании или вставке с использованием этой модели. У меня проблемы.

ответ

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.

+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

Смежные вопросы