Почему ASP.NET MVC 3 не разрешает мой DisplayTemplate для сложного типа? - PullRequest
1 голос
/ 23 декабря 2011

Я использовал DisplayTemplates / EditorTemplates для относительно простых типов, таких как DateTime и DateTime? И т. Д. Теперь я хочу использовать его для визуализации более сложного типа, который передает мою модель представления. Сложный тип в основном является сущностью из EF.

Модель вида выглядит так:

public class RentalViewModel
{
    public Inventory InventoryItem { get; set; }
}

Я создал шаблон внутри Shared / DisplayTemplates с именем «Inventory.cshtml». Это выглядит так (я немного удалил, но по сути то же самое)

@model MyCompany.MyApp.BusinessObjects.Models.Inventory
<div class="highlightBox">
   <ul class="double">
      <li>Dimensions:</li>
      <li>@Html.DisplayTextFor(i => i.Dimensions)</li>
      <li>Capacity</li>
      <li>@Html.DisplayTextFor(i => i.Capacity)</li>
   </ul>
</div>

Внутри вида у меня есть это:

@Html.DisplayTextFor(i => i.InventoryItem)

Я ожидал, что он разрешит мой DisplayTemplate здесь и будет использовать его. Однако это не так. Я добавил свойство UIHint в модель представления на всякий случай:

public class RentalViewModel
{
    [UIHint("Inventory")]
    public Inventory InventoryItem { get; set; }
}

Это, похоже, не имело значения. Я явно что-то здесь упускаю, но я этого не вижу.

При рендеринге все, что я получаю, это число "1" внутри HTML - это первичный ключ для сущности, которую я рендерим.

Есть идеи? Такого рода вещи должны работать, верно?

РЕДАКТИРОВАТЬ: просто изменение с @ Html.DisplayForText (i => i.InventoryItem) на @ Html.DisplayFor (i => i.InventoryItem) решает проблему. Атрибут UIHint не требуется.

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Вместо:

@Html.DisplayTextFor(i => i.InventoryItem)

попробовать:

@Html.DisplayFor(i => i.InventoryItem, "Inventory")
1 голос
/ 23 декабря 2011

DisplayTextFor не является функцией рендеринга шаблона. Только DisplayFor, EditorFor, DisplayForModel и EditorForModel будут просматривать и использовать ваши шаблоны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...