我的模型中有一个名为"Promotion"的属性,它的类型是一个名为"UserPromotion"的标志枚举.我的枚举成员的显示属性设置如下:
[Flags]
public enum UserPromotion
{
None = 0x0,
[Display(Name = "Send Job Offers By Mail")]
SendJobOffersByMail = 0x1,
[Display(Name = "Send Job Offers By Sms")]
SendJobOffersBySms = 0x2,
[Display(Name = "Send Other Stuff By Sms")]
SendPromotionalBySms = 0x4,
[Display(Name = "Send Other Stuff By Mail")]
SendPromotionalByMail = 0x8
}
Run Code Online (Sandbox Code Playgroud)
现在我希望能够在我的视图中创建一个ul来显示我的"Promotion"属性的选定值.这是我到目前为止所做的,但问题是如何在这里获取显示名称?
<ul>
@foreach (int aPromotion in @Enum.GetValues(typeof(UserPromotion)))
{
var currentPromotion = (int)Model.JobSeeker.Promotion;
if ((currentPromotion & aPromotion) == aPromotion)
{
<li>Here I don't know how to get the display attribute of …Run Code Online (Sandbox Code Playgroud) ASP.NET MVC中DisplayName属性和Display属性有什么区别?
c# asp.net-mvc data-annotations displayattribute .net-attributes
我使用自定义资源提供程序从数据库中获取资源字符串.这适用于ASP.NET,我可以将资源类型定义为字符串.MVC 3中模型属性的元数据属性(如[Range],[Display],[Required])需要Resource的类型作为参数,其中ResourceType是.resx文件生成的代码隐藏类的类型.
[Display(Name = "Phone", ResourceType = typeof(MyResources))]
public string Phone { get; set; }
Run Code Online (Sandbox Code Playgroud)
因为我没有.resx文件,所以这样的类不存在.如何将模型属性与自定义资源提供程序一起使用?
我想要这样的东西:
[Display(Name = "Telefon", ResourceTypeName = "MyResources")]
public string Phone { get; set; }
Run Code Online (Sandbox Code Playgroud)
System.ComponentModel中的DisplayNameAttribute为此目的具有可覆盖的DisplayName属性,但DisplayAttribute类是密封的.对于验证属性,不存在相应的类.
asp.net-mvc localization internationalization displayattribute asp.net-mvc-3
结果[DisplayName("foo")]和[Display(Name="foo")]为@Html.LabelFor(x => x.MyProperty)相同.两者都生成<label for="MyProperty">foo</label>.DisplayName的优点是什么?
根据文件:
运行时不会查找非验证属性的本地化字符串.在上面的代码中,"电子邮件"(来自[显示(名称="电子邮件")])将不会本地化.
我正在寻找一种在DisplayAttribute中本地化文本的方法.有任何建议以适当的方式做到吗?
displayattribute asp.net-core asp.net-core-1.0 asp.net-core-localization
想知道这是否可能或具有这种效果的东西.
public class MyModel
{
public string Name { get; set; }
[Display(Name = String.Format("This is [0]'s phone number", Name)]
public string PhoneNumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我在谈论一个带有变量的DisplayName,非静态的,可能还基于模型的其他属性.这有可能吗?
我有这个枚举(Notebook.cs):
public enum Notebook : byte
{
[Display(Name = "Notebook HP")]
NotebookHP,
[Display(Name = "Notebook Dell")]
NotebookDell
}
Run Code Online (Sandbox Code Playgroud)
我的班级(TIDepartment.cs)中的这个属性:
public Notebook Notebook { get; set; }
Run Code Online (Sandbox Code Playgroud)
它工作得很好,我只有一个"问题":
我创建了一个EnumDDLFor,它显示我在DisplayAttribute中设置的名称,带有空格,但是对象在DisplayAttribute中没有收到该名称,收到Enum名称(正确),所以我的问题是:
有没有办法接收带有我在DisplayAttribute中配置的空格的名称?
我打算扩展DisplayDataAnnotation属性来保存AccessKey输入字段的值,这样我就可以在我自己LabelFor<>和TextBoxFor<>HtmlHelper扩展中使用它,如下所示:
[Display(Name = "User name", AccessKey = "U")]
Run Code Online (Sandbox Code Playgroud)
在此之前,有人能告诉我是否存在实现声明性访问密钥功能的现有机制?
如果没有,有人可以告诉我如何扩展DisplayDataAnnotation属性.:-)
我有一个带有“价格”属性的模型,该模型具有DisplayAttribute
[Display(Name = "Price (in €)")]
Run Code Online (Sandbox Code Playgroud)
现在我想使用表标题显示
@Html.DisplayNameFor(model => model.Price)
Run Code Online (Sandbox Code Playgroud)
但是,当列很小时,“文本”可能会分为两行:
Price (in
€)
Run Code Online (Sandbox Code Playgroud)
但我希望它打破这种方式:
Price
(in €)
Run Code Online (Sandbox Code Playgroud)
是否可以在Display属性中插入一个不间断的空格?使用“ Price (in €)”会导致“ ”打印为文本。
据我了解,根本不为元素渲染 HTML,或者添加 display:none,似乎具有完全相同的行为:两者都使元素消失而不与 HTML 交互。
我正在尝试禁用和隐藏复选框。所以HTML的总量很小;我无法想象性能会成为问题。
就编写服务器代码而言,编码工作大致相同。
鉴于这两种选择,一种做法比另一种更好吗?或者我使用哪个并不重要?
displayattribute ×10
asp.net-mvc ×6
c# ×4
access-keys ×1
asp.net ×1
asp.net-core ×1
css ×1
enums ×1
html ×1
localization ×1
razor ×1