【发布时间】:2011-11-17 14:15:41
【问题描述】:
我正在阅读 Brad Wilson 的一篇文章:
ASP.NET MVC 2 模板,第 2 部分:模型元数据
http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-2-modelmetadata.html
假设在我的 ASP.NET MVC 3 应用程序中,我有以下模型:
public class Contact {
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
这是我的观点:
@model MyApp.Models.Contact
<h2>Contact</h2>
@Html.EditorForModel()
我在~/Views/Shared/EditorTemplates/ 路径中有一个Contact.cshtml 文件。
我的问题是如何联系每个模型属性的ModelMetadata。例如,如下所示:
Contact.cshtml
@model MyApp.Models.Contact
<input type="text" placeholder="@Model.FirstName.GetItsMetaData().Watermark"
value="@Model.FirstName" />
注意: GetItsMetaData 方法是我完全编造的。我只是想获取该属性的 MedelMetadata。没有 就这样吧。
编辑
我发现了另一个类似的问题:
ModelMetadata for complex type in editortemplate in asp.net mvc
答案是这样的:
@{
var metadata = ModelMetadata
.FromLambdaExpression<TestThing, string>(x => x.Test2, ViewData);
var watermak = metadata.Watermark;
}
但是对我的模型的每个属性都这样做是相当冗长的,不是吗?
【问题讨论】:
-
嗨 tugberk,我只是想回答您的问题“Entity Framework 4.2 上 Entry
(entity) 和 Entry(entity) 之间的性能差异 ”但在在您删除问题的同时,大声笑。要点是:当您调用Entry(entity)(泛型类型推断)时,编译器 将选择泛型重载。无论您是否指定泛型参数,都会调用相同的方法。 (唯一的例外是如果entity是object类型在编译时,则调用非泛型重载。)因为编译器调用相同的方法,所以没有性能差异。 -
@Slauma 是的,他们认为这个问题很愚蠢,我不想争论,所以我删除了它。非常感谢!
标签: asp.net-mvc asp.net-mvc-3 modelmetadata asp.net-mvc-templates