yeni bir HTML yardımcı oluşturma içeren bir çözüm bulmuşlardır. OP, aynı sınıfın, eylem yönteminin yanı sıra görünüm sayfası için bir parametre olarak kullanılmasının uygunsuz olduğunu söylemekte doğrudur. Bazen ViewPage'e daha fazla bilgiyi kullanıcı form formunda bize geri bildirdiğinden daha fazla aktarmak istiyoruz.
<% var productForm = Html.HtmlHelperFor(Model.Product); %>
ve sonra aşağıdaki gibi kullanılır::
ben ile geldi çözeltisi I aşağıdaki kullanmak HtmlHelperFor (T obj) olarak adlandırılan bir HtmlHelper uzantısı yöntemi kullanmaktır
<%= productForm.TextBoxFor(x => x.Name) %>
uzantısı yöntemi aşağıdaki gibidir:
public static HtmlHelper<T> HtmlHelperFor<T>(this HtmlHelper html, T model)
{
var newViewData = new ViewDataDictionary(html.ViewDataContainer.ViewData) { Model = model };
ViewContext newViewContext = new ViewContext(html.ViewContext.Controller.ControllerContext, html.ViewContext.View, newViewData, html.ViewContext.TempData, html.ViewContext.Writer);
var viewDataContainer = new ViewDataContainer(newViewContext.ViewData);
return new HtmlHelper<T>(newViewContext, viewDataContainer, html.RouteCollection);
}
ViewDataContainer IVI bir uygulamasıdır Sysetm.Web.Mvc bulunan ewDataContainer arayüzü:
public class ViewDataContainer : System.Web.Mvc.IViewDataContainer
{
public ViewDataContainer(System.Web.Mvc.ViewDataDictionary viewData)
{
ViewData = viewData;
}
public System.Web.Mvc.ViewDataDictionary ViewData { get; set; }
}
yukarıdaki aramalar yerine bir sınıfın, sen POST kabul eden yöntemin parametreleri çerçevesinde bir Product
nesne var sağlayacak projeyi içeren seni normalde görüşünüze geçerdi.
XForms'taki durumuyla ilgili bazı örneklere ne dersiniz? –
Yapmak istediğiniz şeyin ** gerçek ** bir örneğini verebilir misiniz? Neyi başarmaya çalıştığınızı anlamıyorum (Giriş ve Çıkış modeli?). –
Dmitriy Nagirnyak: fikir görünümünü doldurmak için bir modeli kullanmak olmasıdır. Verileri görünümden kaydetmek için aynı modeli kullanamazsınız. Onlar farklı kaygılar var. – BjartN