Çocukların görünüm modellerinin bir listesini içeren bir üst görünüm modelim var (Arayalım ParentViewModel) (Onlara ChildViewModel diyelim). Her çocuk görüntüleme modeli bağımsız olarak düzenlenebilir ve bir döngüde görüntülediğim ayrı bir formum var. Bu harika bir şekilde çalışıyor ancak çocuk modelini nasıl yayınlayacağımı ve ebeveynleri görmezden gelemem. MVC Post A Denetleyiciye bir Çocuk modeli
Bu
benim biçimidir:@model ParentViewModel
...
@foreach (var child in Model.Children)
{
@using (Html.BeginForm("_EditChild", "Admin", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-group">
@Html.EditorFor(model => child.Content, new {htmlAttributes = new {@class = "form-control"}})
@Html.ValidationMessageFor(model => child.Content, "", new {@class = "text-danger"})
</div>
<div class="form-group">
<div class="col-md-12">
<input type="submit" value="Create" class="btn btn-default new-post" />
</div>
</div>
}
}
Ve bu benim kumandanın imzadır. ParentViewModel'de liste halinde bulunan bir ChildViewModel türü bekleniyor.
[Authorize]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult _EditPost([Bind(Include = "")] ChildViewModel childViewModel)
{
}
Form çalışıyor ve gönderen BUT ChildViewModel, gönderen denetleyiciye ulaştığında boştur. Bu kesinlikle, Form Gönderi ile Eylem arasındaki bağın gerçekleşmemesidir.
BeginForm çağrısında _EditChild nedir? – skalinkin
@using daha yüksek olabilir mi? * @ using ... @ foreach ... ** –
İlk önce "foreach" döngüsünde form kontrolleri oluşturamazsınız ([bu yanıtı okuyun] (http://stackoverflow.com/questions/30094047/html-table-to -ado-net-datatable/30094943 # 30094943) bir açıklama için). Ancak her seferinde yalnızca bir form gönderebilirsiniz, böylece her bir öğe için bir form oluşturmanın anlamı yoktur.Tüm denetimleri tek bir biçimde oluşturun, böylece tüm değişiklikleri bir kerede düzenleyebilir ve geri yükleyebilir ya da alt öğelerinizi düzenlemek için başka bir sayfaya bağlantı sağlayabilirsiniz. –