私はDisplayTemplates/EditorTemplatesを比較的単純な型(DateTimeやDateTimeなど)で使っています。今では、これを使ってより複雑な型をレンダリングして、ビューモデルを渡したいと考えています。複合型は、基本的にEFのエンティティです。ASP.NET MVC 3が複雑なタイプのDisplayTemplateを解決できないのはなぜですか?
ビューモデルは、次のようになります
public class RentalViewModel
{
public Inventory InventoryItem { get; set; }
}
私は「Inventory.cshtml」という名前の共有/ DisplayTemplatesの内側にテンプレートを作成しました。
@Html.DisplayTextFor(i => i.InventoryItem)
が、私はここに私のDisplayTemplateを解決することを期待していた:それは、私はこれを持って、(私は少しを削除したが、それは本質的には同じです)ビューの内部
@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>
次のようになりますそれを使用してください。しかし、それはしません。私は念のために、私の見解モデルにUIHintプロパティを追加しました:違いを確認していないようでした
public class RentalViewModel
{
[UIHint("Inventory")]
public Inventory InventoryItem { get; set; }
}
。私は明らかにここに何かを見逃しているが、私はそれを見ていない。
レンダリング時には、HTMLの内部で数字「1」が得られます。これはレンダリングするエンティティの主キーです。
アイデア?この種のものはうまくいくはずですよね?
EDIT:@ Html.DisplayForText(i => i.InventoryItem)から@ Html.DisplayFor(i => i.InventoryItem)に変更すると、問題が修正されます。 UIHint属性は必要ありません。
これはうまくいくようです。ありがとう。 –