2011-02-22 5 views
6

[OK]を私は、ビューのthatsが強く、オブジェクトのリストを作成するコレクションをMyObjectにASP.NET MVC LISTと同じビューで作成し

@model IEnumerable<ViewModels.MyObject> 

Iループの集合として入力されています。

同じページで、新しいMyObjectを追加するためにフォームを作成する必要があります。

ラムダ式に沿ってHtmlヘルパーを使用して、モデルから強く型付けされた要素を作成する方法はありますか?

このページのフォーム部分をMyObject(コレクションではない)とタイプされた別の部分ビューとしてロードするのが最善でしょうか?

答えて

7

あなたがプロパティとして2つのビューモデルとビューモデルを作成することができます

class ListCreateViewModel { 
    ListViewModel ListViewModel { get; set; } 
    CreateViewModel CreateViewModel { get; set; } 
} 

次にあなたが

Html.RenderPartial("Create", Model.CreateViewModel); 

あなたの部分がモデルとしてCreateViewModelを持つことになります使用することができます。

またまったく別のビューとモデルを作成し、呼び出すことができます。新しい要求とビューは別のコンテキストでレンダリングされるよう

Html.RenderAction("Create", "Controller"); 

RenderActionで動作します。

4

私はコレクションをループしてオブジェクトのリストを作成します。

なぜループしますか?ビューでのループは醜いです。あなたは、エディタのテンプレートを使用することができます。

@model IEnumerable<ViewModels.MyObject> 
@using (Html.BeginForm()) 
{ 
    @Html.EditorForModel() 
    <input type="submit" value="Go!" /> 
} 

とモデルコレクションの各項目(~/Views/Shared/EditorTemplates/MyObject.cshtml)のために呼び出されます、対応するエディタテンプレート内:

@model ViewModels.MyObject 
<div> 
    @Html.LabelFor(x => x.Prop1) 
    @Html.TextBoxFor(x => x.Prop1) 
    @Html.ValidationMessageFor(x => x.Prop1) 
</div> 
<div> 
    @Html.LabelFor(x => x.Prop2) 
    @Html.TextBoxFor(x => x.Prop2) 
    @Html.ValidationMessageFor(x => x.Prop2) 
</div> 
... 
+0

すごいです!あなたはmvcでこれを行うことができるという手がかりはありませんでした – Baahubali

関連する問題