2011-02-22 29 views
6

Tamam ben bir Görünüm şu kuvvetle nesnelerin listesini oluşturmak için toplama yoluyla MyObjectASP.NET MVC LİSTESİ ve aynı görünümde oluşturma

@model IEnumerable<ViewModels.MyObject> 

ben döngü topluluğu olarak yazıldığında var.

Aynı sayfada yeni bir MyObject eklemek için form oluşturmam gerekiyor.

Modelimden güçlü bir şekilde yazılan öğeleri oluşturmak için wih lambda ifadeleri boyunca Html yardımcılarını kullanmanın bir yolu var mı?

veya bu sayfanın Form bölümünü, MyObject (koleksiyon değil) olarak yazılan başka bir kısmi görünüm olarak yüklemek en iyisi olur mu?

cevap

7

Sen özellikleri olarak iki görünüm modelleriyle görünümü modeli oluşturabilirsiniz:

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

Sonra

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

Kişisel kısmi model olarak CreateViewModel olacak kullanabilirsiniz.

Ayrıca tamamen ayrı bir görünüm ve modelini yapmak ve çağırabilirsiniz: Yeni istek ve görünüm olarak

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

RenderAction davranacağını farklı bir bağlamda oluşturulur.

4

Nesnelerin bir listesini oluşturmak için koleksiyonda dolaşırım.

Neden dönüyorsunuz? Görünümde döngü çirkin. Sen editör şablonlarını kullanabilirsiniz:

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

ve model toplama her öğe (~/Views/Shared/EditorTemplates/MyObject.cshtml) için çağrılır gelen editör şablonu içinde:

@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

vay! mvc'de bunu yapabileceğine dair hiçbir ipucu yoktu – Baahubali

İlgili konular