Ceci est mon problème.MVC: Action pour mettre à jour une partie du modèle, à partir d'une validation côté client
J'ai un modèle composé de deux structures.
public class MyDoubleStructureModel
{
public MyDoubleStructureModel(CLIENT MyClient, List<PROVIDER> MyProviders);
CLIENT MyClient {get;private set;};
List<PROVIDER> MyProviders {get;private set;} ;
}
Les deux objets sont chargés au début du chargement de la page. L'objet « MyProviders » remplit un RenderPartial:
<div id="dialog">
<% Html.RenderPartial("UCProviders", Model.MyProviders); %>
<%} %>
</div>
Sur mon formulaire client, j'ai un dropdownlist, qui devrait permet à l'utilisateur, de mettre à jour les données incluses dans la vue partielle. Il doit être mis à jour sans recharger la vue.
Mon idée était d'appeler (par JQuery par exemple) une fonction côté serveur, qui ne mettrait à jour qu'une partie de mon modèle.
$("#ddlChangeProviders").change(function() {
$.ajax({
type: "POST",
url: "/Client/UpdateListProvider/?provID=" + $("#ddlChangeProviders").val()
});
Mais je ne sais pas s'il est possible de mettre à jour, seule une partie de mon modèle (dans ce cas, la partie « fournisseurs »).
Une idée pour compléter mon code? Suis-je sur la bonne voie? Je suppose que la fonction « côté serveur « UpdateListProvider »(l'affichage d'une liste mise à jour des fournisseurs dans un PartialView) manque ...
C'est ce qui devrait être sur ma fonction UpdateListProvider
public ActionResult UpdateListProvider(int provID)
{
List<PROVIDER> MyProvidersInMyModel = _entities.Providers.Where(c => c.PROV_ID == provID).ToList();
var model = new MyDoubleStructureModel(null, MyProvidersInMyModel)
return View(model);
}
Merci pour votre aide (Demandez-moi si la description n'est pas assez claire)
Merci pour votre réponse. Pouvez-vous détailler, le "var model = // Obtenir le modèle à mettre à jour"? – PetersLast
puisque votre but est de mettre à jour un modèle. Donc, quand vous avez la méthode provID in action, il vous suffit de récupérer le modèle en question depuis db etc. et de mettre à jour son champ provID. vous pouvez également passer un identifiant unique de votre modèle dans votre requête ajax afin que vous puissiez facilement obtenir l'objet modèle de db –
Eh bien, je vais poser différemment ma question précédente, qui semble peut-être trop simple pour être vraie :)) : quel est le code de ligne, qui peut obtenir le "modèle actuel" utilisé (et rempli) du formulaire actuel? Le code 'complet' de la ligne: 'var model = // get model to update'? – PetersLast