2016-03-28 4 views
0

Когда я использую визуальные студийные варианты лесов для Creating MVC View,using Entity Framework, Visual Studio создает представления и ставит имя Модели поверх каждого представления, а также использует DisplayName для меток полей. он заботится о аннотации Display для полей. например Вот моя модель класс:Определить отображаемое имя для моделей

namespace ProjectManager.Models 
{ 
    [Display(Name="A More Readable Name for my class to display it to users!")] 
    public class MyVeryComplicatedlyNamedModel 
    { 

     [Display(Name="نام(Description for name field in Unicode)")]    
     string Name; 
    } 
} 

автоматически сгенерированный вид на него, как показано ниже:

@model Project.Models.MyVeryComplicatedNamedModel 

@{ 
    ViewBag.Title = "Details"; 
} 

<h2>Details</h2> 

<div> 
    <h4>MyVeryComplicatedNamedModel</h4> 

    .... 
    .... 

Я хочу знать, есть ли методы, чтобы установить DisplayName для самого класса, например, что титул зрения который отображается как h4 tag (<h4>MyVeryComplicatedNamedModel</h4>), более читабельным, и я могу выбрать свое описание? Ключевой момент является то, я не хочу, чтобы манипулировать автоматически создаваемый вид сделать это, и я хочу, чтобы использовать какое-то аннотацию, чтобы помочь Visual Studio, чтобы выбрать свое собственное описание имени класса,

Использования синтаксиса Display(Name='') приводит к ошибкам Attribute 'Display' is not valid on this declaration type. It is only valid on 'method, property, indexer, field, param' declarations.

+0

Зачем вам это нужно на классе? – Shyju

+0

Чтобы автоматически разместить читаемое имя класса внутри просмотров. – VSB

+0

Извините! Мне все еще трудно понять, что вы пытаетесь сделать? Что вы хотите сделать в просмотрах еще раз? – Shyju

ответ

3

ПРИМЕЧАНИЕ: этот ответ был размещен перед осветлением Аскер, что ручная модификация не то, что спрашивающий был после того, как ...

namespace Project.Models 
{ 
    public class Students 
    { 
     public readonly string DisplayName = "University Students"; 
    } 
} 

то ввиду

<div>@Model.DisplayName</div> 

В качестве альтернативы - если вы хотите придерживаться атрибута (я не понимаю, почему, но ...), вы можете прибегнуть к другому, который существовал под именем DisplayNameAttribute, но тогда вам, возможно, придется сделать некоторые уродливый поиск внутри представления, так как я не знаю о Html Helper, который делает это за вас.

+0

В настоящее время тег типа '

Учащиеся

' добавлены в начало каждого автоматически созданного представления. В случае моделей с именами типа UnitBasedContractPaymentRequest этот тег будет '

UnitBasedContractPaymentRequest

' в автоматически сгенерированных представлениях. Я ищу способ заставить VS использовать мое желаемое имя внутри автоматически генерируемых представлений. Знаете ли вы какой-либо метод для этого (что не нужно манипулировать представлениями после своего поколения)? – VSB

+0

Я только что обновил свой вопрос. По вашему мнению, по умолчанию строительные леса Visual Studio кажутся настолько ограниченными. – VSB

+1

@VSB Вам необходимо создать свои пользовательские леса: отметьте это сообщение в блоге: [Как создать пользовательские шаблоны шаблонов в ASP.NET MVC] (https://www.credera.com/blog/technology-insights/microsoft-solutions/ создать-пользовательский-эшафот-шаблоны-Asp-сетчатая MVC /) – Balde

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