Display template is not picked from Object template

39 Views Asked by At

I am trying to create DisplayTemplates -> Object.cshtml template and from it pickup property templates for specified fields. I will provide example to show the problem.

The view model

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

I want to display this model in View.cshtml like this

@model CAWP.Models.UserViewModel

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

My ASP.NET MVC DisplayTemplates folder has two files Object.cshtml and Date.cshtml.

The Object.cshtml looks like

  @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>      
  }

The Date.cshtml is created special for UserViewModel.DateStamp property

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

So the problem is that @Html.Display(prop.PropertyName) in Object.cshtml never put UserViewModel.DateStamp into Date.cshtml template. Any ideas why it is not working?

1

There are 1 best solutions below

0
On

Actually the problem was

@Html.DisplayForModel(Model)

should be

@Html.DisplayForModel()

I have no idea how these two are differt.