Tek bir görünümde birden çok formla bazı sorunlara yol açıyor. Bütün BankInfos her biri için ayrı formlar içinde birbirinden altında görüntülenmesini istediğiniz, benim ViewModelMVC görünümünde birden çok form: ModelState tüm formlara uygulanır
public class ChangeBankAccountViewModel
{
public IEnumerable<BankInfo> BankInfos { get; set; }
}
public class BankInfo
{
[Required]
public string BankAccount { get; set; }
public long Id { get; set; }
}
:
Aşağıdaki ViewModel olduğunu varsayalım.
@model BankInfo
@using (Html.BeginForm())
{
@Html.HiddenFor(m => m.InvoiceStructureId)
@Html.TextBoxFor(m => m.IBANAccount)
<button type="submit">Update this stuff</button>
}
yanı sıra benim gerçek görünüm BankInfo:
Bunu başarmak için, ben kısmi görünümü _EditBankInfo kullanıyorum
foreach(var info in Model.BankInfos)
{
Html.RenderPartial("_EditBankInfo", info);
}
Son, burada benim 2 Aksiyon Yöntemleri şunlardır:
[HttpGet]
public ActionResult BankInfo()
{
return View(new ChangeBankAccountViewModel{BankInfos = new [] {new BankInfo...});
}
[HttpPost]
public ActionResult BankInfo(BankInfo model)
{
if(ModelState.IsValid)
ModelState.Clear();
return BankInfo();
}
Tüm bunlar hunky dory üzerinde çalışıyor: Doğrulama düzgün çalışıyor, yayınlanan model tanınıyor ve onaylanıyor doğru ... Ancak, sayfa yeniden yüklendiğinde sorun ortaya çıktığında. Aynı formu birden çok kez kullanıyorum, ModelState'im birden çok kez uygulanacak. Dolayısıyla, bir formda bir güncelleme gerçekleştirilirken, bir sonraki sayfadaki yüklenen değerler gönderilecektir.
Bunun olmasını önlemek için herhangi bir yolu var mı?
Kısmi görünümler olmadan bunu yapmayı denedim, ancak bu adlandırma biraz vidalıyor (benzersizdir, ancak sunucuya dayalı model oluşturma işlemi bunları tanımayacaktır).
Herhangi bir cevap için teşekkürler.
Formun teslim edildiği denetleyici eylemini gösterir misiniz? Özellikle parametre olarak aldığı model ve manzaraya geçtiği model ile ilgileniyorum. –
@DarinDimitrov, Eklendi. Bunun basitleştirilmiş bir örnek olduğunu biliyorsunuz, ancak temel kurulum orada olmalı. Ayrıca, muhtemelen bir çeşit PRG senaryosunu kullanıyorum. – Kippie