Je suis très nouveau sur ASP.NET MVC et j'ai des problèmes avec quelque chose qui semble ne pas poser problème.Les valeurs des modèles ne sont pas conservées
Avec cette ViewModel:
public enum Step
{
One = 1,
Two = 2,
Three = 3
}
public class TestViewModel
{
public string Description
{
get
{
return "Current step is " + this.Step;
}
}
public Step Step { get; set; }
public string Dummy{ get; set; }
public TestViewModel()
{ }
public TestViewModel(Step step)
{
this.Step = step;
}
}
et ce point de vue:
@using MvcApplication1
@model TestViewModel
@using (Html.BeginForm("Test", "Home"))
{
if (Model.Step == Step.One)
{
@Html.HiddenFor(m => m.Step)
@Html.HiddenFor(m => m.Dummy)
<p>@Model.Description</p>
}
else if (Model.Step == Step.Two)
{
@Html.HiddenFor(m => m.Step)
@Html.HiddenFor(m => m.Dummy)
<p>@Model.Description</p>
}
else if (Model.Step == Step.Three)
{
@Html.HiddenFor(m => m.Step)
@Html.HiddenFor(m => m.Dummy)
<p>@Model.Description</p>
}
<input type="submit" value="Continue" />
}
et ce contrôleur:
public ActionResult Test()
{
TestViewModel model = new TestViewModel(Step.One);
return View(model);
}
[HttpPost]
public ActionResult Test(TestViewModel model)
{
Debug.Print("Enter: Step = {0}", model.Step);
switch (model.Step)
{
case Step.One:
model.Step = Step.Two;
model.Dummy = "2";
break;
case Step.Two:
model.Step = Step.Three;
model.Dummy = "3";
break;
case Step.Three:
model.Step = Step.One;
model.Dummy = "1";
break;
}
Debug.Print("Enter: Step = {0}", model.Step);
return View(model);
}
Sur le premier clic du bouton du contrôleur définit model.Step à Step.Two et ma vue est mise à jour correctement.
Mais sur le second (et tout autre) clic du modèle de bouton. Step est lu comme Step.One au lieu de Step.Two donc rien n'est mis à jour sur ma vue.
Y at-il quelque chose d'évident que je suis manquant ici? Pourquoi les valeurs ne sont-elles pas lues/sauvegardées correctement?
Merci Ufuk. Cela semble faire le travail. – dlarkin77