不从对象模板中选择显示模板

时间:2017-12-13 15:17:36

标签: asp.net-mvc asp.net-mvc-templates

我正在尝试创建DisplayTemplates - > Object.cshtml模板,从中获取指定字段的拾取属性模板。我将举例说明问题。

视图模型

public class UserViewModel
    {
        public string FullName { get; set; }        
        public string Email { get; set; }
        [DataType(DataType.Date)]        
        public string DateStamp { get; set; }  
}

我想在View.cshtml中显示此模型

@model CAWP.Models.UserViewModel

     <fieldset>
         <legend>User Information </legend>
         @Html.DisplayForModel(Model)
    </fieldset>

我的ASP.NET MVC DisplayTemplates文件夹有两个文件Object.cshtmlDate.cshtml

Object.cshtml看起来像

  @foreach (var prop in ViewData.ModelMetadata.Properties.Where(p => p.ShowForDisplay))
  {
      <div class="display-label">@prop.DisplayName</div>
      <div class="display-field">@Html.Display(prop.PropertyName)</div>      
  }

Date.cshtml特别针对UserViewModel.DateStamp属性

创建
<time datetime="@ViewData.TemplateInfo.FormattedModelValue" data-date-format="date"></time>

问题是@Html.Display(prop.PropertyName)中的Object.cshtml从未将UserViewModel.DateStamp放入Date.cshtml模板中。任何想法为什么它不起作用?

1 个答案:

答案 0 :(得分:0)

实际上问题是

@Html.DisplayForModel(Model)

应该是

@Html.DisplayForModel()

我不知道这两者是如何不同的。