【问题标题】:Define Display Name for Models定义模型的显示名称
【发布时间】:2016-03-28 17:39:13
【问题描述】:

当我为 Creating MVC View,using Entity Framework 使用 Visual Studio 脚手架选项时,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 标记 (&lt;h4&gt;MyVeryComplicatedNamedModel&lt;/h4&gt;) 的视图标题更具可读性并且我可以选择自己的描述?关键是我不想操作自动创建的视图来这样做,我想使用某种注释来帮助 Visual Studio 为类名选择我自己的描述,

使用语法Display(Name='')会导致错误Attribute 'Display' is not valid on this declaration type. It is only valid on 'method, property, indexer, field, param' declarations.

【问题讨论】:

  • 为什么要在课堂上使用它?
  • 自动将类的可读名称放入视图中。
  • 不适合用户阅读你说的是哪个名字?如果你在谈论@model SomeClass,它不是供用户阅读的,它是供 Razor 了解您的视图绑定到什么类型的。
  • @VSB:你在说什么?与其模糊地试图描述你的观点,不如在问题中展示出来。
  • 为什么您的用户会阅读您的类名?他们应该不知道也不在乎你如何称呼你的课程。

标签: c# asp.net asp.net-mvc visual-studio-2012 asp.net-mvc-5


【解决方案1】:

注意:这个答案是在提问者澄清手动修改不是提问者之后发布的......

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

然后在视图中

<div>@Model.DisplayName</div>

作为替代方案 - 如果你想坚持一个属性(我不明白为什么,但是......)你可以求助于另一个存在的名为 DisplayNameAttribute 的属性,但是你可能不得不做一些在视图中进行丑陋的检索,因为我不知道有一个 Html Helper 可以为您完成它。

【讨论】:

  • 目前在每个自动生成的视图的开头添加了一个像&lt;h4&gt;Students&lt;/h4&gt; 这样的标签。对于名称为 UnitBasedContractPaymentRequest 的模型,此标签将在自动生成的视图中为 &lt;h4&gt; UnitBasedContractPaymentRequest&lt;/h4&gt;。我正在寻找一种方法来强制 VS 在自动生成的视图中使用我想要的名称。你知道这方面的任何方法(在生成后不需要操作视图)?
  • 我刚刚更新了我的问题。根据您的评论,Visual Studio 的默认脚手架似乎非常有限。
  • @VSB 你必须创建你的自定义脚手架:查看这篇博文:How to Create Custom Scaffold Templates in ASP.NET MVC
猜你喜欢
  • 2016-07-26
  • 2018-06-19
  • 2020-06-10
  • 1970-01-01
  • 2019-11-08
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多