Więc chcę utworzyć wielokrotnego użytku widok na edycję adres, numer telefonu itpMVC4 Częściowy widok nie ładuje wartości do „pojemnik” modelu na stanowisku z powrotem
I konfiguracji modelu pojemnika, który zawiera wszystkie Modele potrzebne. Utworzono częściowy widok obsłużyć część adres th formy
e ale kiedy księguje powrotem do kontrolera, dane klienta jest tam od strony głównej, ale nic z częściowym widokiem tam nie ma (za pomocą MVC4/Razor)
Pojemnik model
public class CustomerViewModel {
public Customer CustomerData { get; set; }
public Address MainAddress { get; set; }
public Address ShippingAddress { get; set; }
public Phone MainPhone { get; set; }
public Phone Fax { get; set; }
}
Kontroler:
public ActionResult Edit(int id = 0) {
CustomerViewModel model = new CustomerViewModel();
model.CustomerData = Customer.FetchById(id);
if (model.CustomerData == null) return HttpNotFound();
//... load addresses, phones
return View(model);
}
[HttpPost]
public ActionResult Edit(CustomerViewModel model) {
if (ModelState.IsValid) {
///... save everything here - model has CustomerData, but nothing else
}
return View(model);
}
Widok główny:
@model ProjectName.WebSite.Models.CustomerViewModel
.....
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Customer</legend>
@Html.HiddenFor(model => model.ModelCustomer.CustomerId)
<div class="editor-label">
@Html.LabelFor(model => model.ModelCustomer.CompanyName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ModelCustomer.CompanyName)
@Html.ValidationMessageFor(model => model.ModelCustomer.CompanyName)
</div>
...
@Html.Partial("Address", Model.MainAddress, new ViewDataDictionary {
TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "Main" }
})
...
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
.....
Adres Częściowy Widok:
@model ProjectName.Business.Address
<fieldset style="margin-top: 20px;">
<legend>@(ViewData["label"] ?? "Address")</legend>
@Html.HiddenFor(model => model.AddressId)
<div class="editor-label">
@Html.LabelFor(model => model.Street)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Street)
@Html.ValidationMessageFor(model => model.Street)
</div>
...
</fieldset>
Co robię źle tutaj - dlaczego nie mogę dostać model zaludnionych z częściowym widokiem?
Jeśli samodzielnie odpowiedziałeś na to pytanie, podaj odpowiedź (PONIŻEJ) i zaakceptuj ją, aby pytanie było oznaczone Odpisano. – kingdango
@Nayt, kingdango ma rację. Proszę przenieść część pytania oznaczoną "SOLVED IT" jako nową odpowiedź poniżej. Po wykonaniu tej czynności oznacz go jako zaakceptowaną odpowiedź. Jednym świetnym rezultatem tego jest to, że inni mogą również uznać Twoją odpowiedź za przydatną; jeśli to zrobią, odpowiedzą na twoją odpowiedź, co jest jedną z fajnych rzeczy na temat uczestnictwa w tej witrynie. –
Myślę, że lepiej użyć edytora EditorTemplate dla tego typu adresu. Pozwoli to uniknąć kłopotów z utrzymaniem kodu w przyszłości. –