ビューの初めに<%@ Import
ステートメントを使用することにより:
<%@ Import Namespace="KandaAlpha.Domain.Model.Entities" %>
またはあなたのweb.configファイルの<namespaces>
セクションに名前空間を追加することにより、この場合の
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="KandaAlpha.Domain.Model.Entities"/>
</namespaces>
</pages>
または、私があなたに推奨する方法は、ViewDataとuを削除することですモデルを表示し、テンプレートを表示します。この場合、あなたの全体foreach
ループが消え、下記のものライナーによって置換される:
<table>
<%= Html.DisplayFor(x => x.Customers) %>
</table>
と、対応する表示テンプレート(~/Views/Shared/DisplayTemplates/Customer.ascx
)内部の各要素のためにレンダリングされる顧客のテンプレートを定義しますあなたのビューモデルのCustomers
コレクション:
<%@ Control
Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<Customer>"
%>
<tr>
<td><%= Html.DisplayFor(x => x.CustomerID) %></td>
<td><%= Html.DisplayFor(x => x.FullName) %></td>
<td><%= Html.DisplayFor(x => x.LastUpdatedOn) %></td>
</tr>
もあるため、あなたの顧客のフルネームは、あなたがそれをコードするHTMLされていないよう<script>alert('I hacked you');</script>
あなたがトラブルに巻き込まれる可能性がある場合Html.DisplayFor
の使用を注意してください。
我々はViewData
を取り除くと、私はいつも私たちの見解は本当にシンプルで読みやすいとなってお勧めするものであるビューモデルを使用して起動得ればあなたが見ることができるように。
この特別なフォルダは '〜/ Views/Shared/DisplayTemplates /'ですか?他の魔法のフォルダ、つまりコントローラ、モデルなど? – Jaggu
@Bob:はい、それは慣行に基づいています。表示テンプレートは、〜/ Views/YourController/DisplayTemplates /にあり、エディタテンプレートと同等の規則があります(どこでも "Editor"の "Display"を切り替えてください)。 –
@Bob Lee Swagger、はい特別です。 '〜/ Views/YourControllerName/DisplayTemplates'を使うこともできます。これは、ASP.NET MVCが最初にテンプレートを探す場所で、見つからなければSharedフォルダに移動します。特定のコントローラに対してのみ有効なテンプレートに役立つ可能性があります。 –