MetadataType属性不适用于MVC3中的详细信息视图

时间:2014-04-12 14:06:16

标签: asp.net-mvc-3 entity-framework

我是实体框架中的新手,我创建了Ado.Net Entity Data model,其中包含两个属性FullNameEmailAddress。我想要做的是在我的详细信息视图中,我想显示Full Name而不是FullName。为此,我编写了这样的代码:

namespace ScaffFolding.Models
{
 [MetadataType(typeof(EmployeeMetaData))]
 public partial class Employee
 {

 }
 public class EmployeeMetaData
 {
    [Display(Name="Full Name")]
    public string FullName { get; set; }

    [Display(Name = "Email Address")]
    public string EmailAddress { get; set; }
 }
} 

我的edmx文件也共享相同的命名空间,并且具有名为Employee的相同类  
现在的问题是,在Details视图中,此代码无效,意味着显示FullName而不是Full Name,但在Create中查看它的工作方式预计。

以下是我的Detail视图的代码:

@model ScaffFolding.Models.Employee

@{
ViewBag.Title = "Details";
}

<h2>Details</h2>

<fieldset>
<legend>Employee</legend>

<div class="display-label">FullName</div>
<div class="display-field">
    @Html.DisplayFor(model => model.FullName)
</div>

<div class="display-label">Gender</div>
<div class="display-field">
    @Html.DisplayFor(model => model.Gender)
</div>

<div class="display-label">Age</div>
<div class="display-field">
    @Html.DisplayFor(model => model.Age)
</div>

<div class="display-label">HireDate</div>
<div class="display-field">
    @Html.DisplayFor(model => model.HireDate)
</div>

<div class="display-label">EmailAddress</div>
<div class="display-field">
    @Html.DisplayFor(model => model.EmailAddress)
</div>

<div class="display-label">Salary</div>
<div class="display-field">
    @Html.DisplayFor(model => model.Salary)
</div>

<div class="display-label">PersonalWebSite</div>
<div class="display-field">
    @Html.DisplayFor(model => model.PersonalWebSite)
</div>
</fieldset>
<p>
@Html.ActionLink("Edit", "Edit", new { id=Model.Id }) |
@Html.ActionLink("Back to List", "Index")
</p>

有谁能告诉我这里出了什么问题?

2 个答案:

答案 0 :(得分:1)

DisplayFor用于从DisplayTemplates文件夹中拾取模板。 更多What is the @Html.DisplayFor syntax for?

LabelFor从数据注释中选择内容

答案 1 :(得分:0)

好的,我得到了答案,这里出了什么问题。问题出在VS生成的代码中:

Visual Studio使用div标签生成Details视图,如下所示

<div class="display-label">FullName</div>

Vistual Studio正在LabelFor视图使用Create的位置:

@Html.LabelFor(model => model.FullName)