Я очень новичок в ASP.NET MVC, и у меня возникают проблемы с чем-то, что похоже на то, что это должно быть без проблем.Значения модели не сохраняются
С этой 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;
}
}
и этой точкой зрения:
@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" />
}
и этот контроллер:
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);
}
На первом нажатием кнопки контроллер устанавливает model.Step к Шагу. Два и мое представление обновлено правильно.
Но на втором (и любом последующем) нажатии кнопки model.Step читается как Step.One вместо Step.Too, так что ничего не обновляется на моем представлении.
Есть ли что-то очевидное, что я здесь отсутствует? Почему значения не читаются/сохраняются правильно?
Спасибо Ufuk. Кажется, это делает работу. – dlarkin77