Html.RenderPartial()
kullanmak yerine kısmi görünümünüzü Shared/EditorTemplates dizinine koyun ve ona türün adını yazın (bu durumda ZipCodeViewModel
). Ardından, özelliğin ifadesinde geçen Html.EditorFor()
kodunu kullanabilirsiniz. EditorFor() alanları doğru bir şekilde önler, böylece MVC'deki model ciltleyici verilerinizi doğru bir şekilde yerleştirebilir.
yüzden bazı bağlantılar ve kaynakları bulmaya çalışacağım ama senin için orada cevap almak istedim edeceğiz bu
@model UserViewModel
.....
@Html.EditorFor(m => m.ZipCode);
gibi bir şey.
DÜZENLEME: Neyse Quick Tips About ASP.NET MVC: Editor Tempaltes
o Html.TextBoxFor()
veya Html.DropDownFor()
uzantıları kullandığınızda, ne yaptıklarını tam adı olsun: Bu blog yayını uzantısı ve EditorTempaltes EditorFor() temelleri üzerine gitmek gibi görünüyor Özelliği, girdiğiniz ifadeden ve HTML giriş öğesinin ad ve kimlik özelliklerini buna göre ayarlar. Örnek olabilir:
@Html.TextBoxFor(m => m.Person.FirstName)
<input id="Person_FirstName" name="Person.FirstName" type="text" value="<what ever was in FirstName>" />
olanlar, giriş adları hale getirecektir ve değerler sonrası verileri anahtar/değer çiftleri vardır. Varsayılan ASP.NET MVC model bağlayıcısı, bu tuşların, denetleyici eylemlerinin gerçekleştirdiği modellere kadar eşleşmesini sağlar. Bir eşleşme bulabilirse, değeri ayarlar.
Yukarıdaki sorunun nedeni, muhtemelen, kısmi görünümünüzdeki giriş adlarının ZipCodeViewModel
'dan kaynaklanmış olması, ancak işleminizin UserViewModel
içeriyor olmasıdır. EditorFor()
, sizin için isimleri önler, böylece temelde sizin için bağlanmış olan verileri geri gönderecek kısmi bir görünüm oluşturabilir. Her ne kadar isim niteliklerini kendiniz için giriş elemanlarına koyabilseniz de (ya da yorumlarda önerdiğiniz gibi her şeyi düzleştirdiğinizde) bu yardımcıları sizin için yapması gerekiyor.
Umarız neler olduğunu ve sizin için olası bir çözümü açıklamaya yardımcı olur.
public static void RenderPartialWithPrefix(this HtmlHelper helper, string partialViewName, object model, string prefix)
{
helper.RenderPartial(partialViewName,
model,
new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = prefix } });
}
Nesnenizi nasıl yüklersiniz? İşe mi açılıyor? Tembel yükleme kullanıyor musunuz? – Nekresh
ZipCode'dan elde edilen verilerin asla işlenmemiş sayfaya dönüştürmediğini mi söylüyorsunuz? Yoksa veriyi geri gönderdiğinde, verilerin asla modele girmediğini mi söylüyorsun? –
Verileri geri yükle, her zaman boş. –