ASP.NET MVC e PartialView fortemente tipizzato
-
23-09-2019 - |
Domanda
Sto caricando una vista parziale con una chiamata AJAX:
public ActionResult LoadServerForm()
{
//data stuff
ViewData["ApplicationID"] = appID.ToString();
ViewData["Servers"] = ServersList(appServerRep.Session, null, appServers);
return PartialView("Application_AddServer");
}
Questa grande opera, ma sto cercando di scappare da stringhe Viewdata magici. Ho provato a fare la vista eredita parziale dalla stessa ViewModel come pagina "ospitare", ma l'oggetto del modello è nullo quando provo a questo nella vista parziale:
<%= Html.HiddenFor(model=>model.Application_Key, Model.Application_Key) %>
C'è un modo per passare alla pagina principale ViewModel giù nella PartialView AJAX-caricato o dovrei essere alla ricerca di un approccio del tutto diverso?
Soluzione
Quando si return PartialView("Application_AddServer");
, devi passare il modello:
return PartialView("Application_AddServer", model);
Poiché si tratta di una richiesta AJAX, è un'invocazione azione controller separato, e il nuovo PartialView non conosce il modello della pagina richiesta. Dovrete ricostruire, sia da qualunque sia la vostra fonte di dati originale è o da dati passati con la richiesta AJAX.