2011-01-13 22 views
4

私はキーと値のペアのリストを持っています。 ViewModelには、フォーム、私はHtml.DisplayForを(使用しようとしているキーと値respectively.Imのラベルとテキストボックスをレンダリングする必要がありますビューでAsp.NetのHtml.DisplayFor()項目のリストのMVC

public class ViewModel 
{ 
    public String Key { get; set; } 
    public String Value { get; set; } 
} 

のカスタムクラスで、基本的にそのリスト)しかし、それはで行きますモデルではなく、モデルのプロパティのみを表示し、リストは表示しません。

私はあなたが(あなたのモデルを仮定すると、コレクションである)モデルの各項目にレンダリングされるメインビュー内のエディタのテンプレートを使用して試みることができる形式

<% foreach (var item in Model) { %> 

    <tr> 

     <td> 
      <%:Html.Display("item")%> 
     </td> 
    <td> 
      <%:Html.Display("item.Value")%> 
     </td> 
    </tr> 

<% } %> 

答えて

2

の何かを達成したいと思います。編集を可能にするテキストボックスをレンダリングするので、表示テンプレートよりもシナリオに適したエディタテンプレートがあります。

<table> 
    <%= Html.EditorForModel() %> 
</table> 

、その後、ビューモデル(~/Views/Home/EditorTemplates/ViewModel.ascx)用のエディタのテンプレートを定義します:だから、むしろDisplayForよりもEditorForを使用することを意味的により正しいだろう

<%@ Control 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl<YourAppName.Models.ViewModel>" %> 
<tr> 
    <td> 
     <%: Model.Key %> 
    </td> 
    <td> 
     <%= Html.TextBoxFor(x => x.Value) %> 
    </td> 
</tr> 
関連する問題