Asp.net mvc 4 不保留模型值
我是ASP.NETMVC的新手,我遇到了一些问题,似乎这应该是一个不需要动脑筋的问题 使用此ViewModel:Asp.net mvc 4 不保留模型值,asp.net-mvc-4,Asp.net Mvc 4,我是ASP.NETMVC的新手,我遇到了一些问题,似乎这应该是一个不需要动脑筋的问题 使用此ViewModel: public enum Step { One = 1, Two = 2, Three = 3 } public class TestViewModel { public string Description { get { return "Current step is " + this
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" />
}
在第一次点击按钮时,控制器设置模型。一步到一步。第二步,我的视图正确更新
但是,在第二次(以及任何后续)点击按钮模型时,步骤被解读为步骤。一而不是步骤。二,因此在我的视图中没有任何更新
这里有什么明显的我遗漏的吗?为什么没有正确读取/保存值?视图中不需要if-else块。你基本上在做同样的事情。这也将有助于:
@using (Html.BeginForm("Test", "Home"))
{
@Html.HiddenFor(m => m.Step)
<p>@Model.Description</p>
<input type="submit" value="Continue" />
}
这将把模型序列化为querystring。更好的方法是将一些ID作为参数传递。谢谢Ufuk。这似乎很管用。
@using (Html.BeginForm("Test", "Home"))
{
@Html.HiddenFor(m => m.Step)
<p>@Model.Description</p>
<input type="submit" value="Continue" />
}
[HttpPost]
public ActionResult Test(TestViewModel model)
{
Debug.Print("Enter: Step = {0}", model.Step);
switch (model.Step)
{
case Step.One:
model.Step = Step.Two;
break;
case Step.Two:
model.Step = Step.Three;
break;
case Step.Three:
model.Step = Step.One;
break;
}
Debug.Print("Enter: Step = {0}", model.Step);
return RedirectToAction("SomeAction", model);
}