0

我正在尝试创建 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.cshtmlUserViewModel.DateStampDate.cshtml

4

1 回答 1

0

其实问题是

@Html.DisplayForModel(Model)

应该

@Html.DisplayForModel()

我不知道这两个有什么不同。

于 2017-12-20T21:15:08.063 回答