J'ai plusieurs formulaires, qui nécessitent une case à cocher pour chaque province/état. Par conséquent, j'ai fait une vue partielle pour rendre les cases à cocher dans un formulaire pour promouvoir la réutilisation du code. Mais lorsque l'utilisateur soumet le formulaire à une méthode de contrôleur, le RegionsViewModel n'est pas lié. La question générale est, comment puis-je obtenir plusieurs formulaires pour partager une vue partielle et voir le modèle?Modèle Reliure de reliure à plusieurs niveaux
Voici un exemple de code de ma situation modèles
public class Form1ViewModel
{
/* Some properties */
public RegionsViewModel Regions {set; get;}
}
public class Form2ViewModel
{
/* Some properties */
public RegionsViewModel Regions {set; get;}
}
public class Form3ViewModel
{
/* Some properties */
public RegionsViewModel Regions {set; get;}
}
public class RegionsViewModel
{
public bool ON {set; get;}
public bool QC {set; get;}
/* this continues for all provinces and states */
}
contrôleur
[HttpPost]
public ActionResult Form(Form1VewModel model) {
//All properties except for model.RegionViewModel does not bind properly to the submitted form :(
}
Form1ViewModel.aspx
<% using (Html.BeginForm())
{%>
<!-- Binds some property -->
<% Html.RenderPartial("Controls/RegionSelector", Model.Regions); %>
<input type="submit" value="Submit Form!" />
<%}%>
Commandes/RegionSelector.ascx
<%=Html.CheckBoxFor(x => x.AvailableProvince_ON> ON
<%=Html.CheckBoxFor(x => x.AvailableProvince_QC> QC
<!-- Binds to all provinces and states -->
Mise à jour Remplacé par "Model.RegionSelectorVm" par "Model.Region". Merci d'avoir trouvé le bug dans mon code de démo Darin Dimitrov.