Mvc 4 中的向导
Wizards in Mvc 4
我需要在 MVC 4 中创建一个向导,我已经完成了大部分工作,现在困扰我的是我的项目要求我在向导的第一步中插入的值应该显示为在下一步中标记。如何实现这一目标,任何人都可以帮助我吗?如果我能得到快速响应,那就太好了。
提前致谢!!
我是这样写应用程序的前端代码的
<div class="wizard-step">
<h3>Step 3: Check Eligibility</h3>
<div class="editor-label" style="width: 25%">
@Html.LabelFor(model => model.AccountNumber)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.AccountNumber)
</div>
<div class="editor-label" style="width: 25%">
@Html.LabelFor(model => model.MeterId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MeterId)
</div>
<div class="editor-label" style="width: 25%">
@Html.LabelFor(model => model.Program)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Program)
</div>
<div class="editor-label" style="width: 25%">
@Html.LabelFor(model => model.PeakLoad)
</div>
<div class="editor-field MB12">
@Html.CheckBoxFor(model => model.PeakLoad)
</div>
<div class="editor-label" style="width: 25%">
@Html.LabelFor(model => model.WifiBroadband)
</div>
<div class="editor-field MB12">
@Html.CheckBoxFor(model => model.WifiBroadband)
</div>
</div>
还有控制器代码
[HttpGet]
public ActionResult EnrollUser()
{
EnrollmentEntity model = new EnrollmentEntity();
BindAggregatorList(model);
BindCBLMethod(model);
BindDeviceManuList(model);
BindDeviceModelList(model);
BindDeviceTypeList(model);
BindProgramList(model);
return View(model);
}
[HttpPost]
public ActionResult EnrollUser(EnrollmentEntity model)
{
return View(model);
}
如果您试图保持原子性,您可以将每个步骤的数据保存在会话对象中,然后在用户完成向导后将所有内容保存在一起。您还可以 POST
从当前步骤和先前步骤到向导下一步的数据。
另一种选择是在向导的每个步骤之后将部分保存到您的数据库中。
更新
考虑到新的限制,并假设您只支持现代浏览器(IE8+ 以及几乎所有版本的 Firefox 和正在使用的 Chrome),您可以使用本地存储来存储数据。参见 Using the Web Storage API。
首先感谢你们对我的问题表现出兴趣并试图解决它。另一件事是任何答案都没有帮助我,或者可能是问题没有得到正确解释。但现在我得到了答案,我把它贴出来,希望对其他人有帮助。
我的问题是我必须在第二个屏幕中将我在第一个屏幕中插入的值显示为不可编辑,为此我刚刚在我想显示的地方使用了 @Model.Username
它。是的,对于服务器端验证,就像我在每个屏幕后发回数据并返回相同的模型。
我需要在 MVC 4 中创建一个向导,我已经完成了大部分工作,现在困扰我的是我的项目要求我在向导的第一步中插入的值应该显示为在下一步中标记。如何实现这一目标,任何人都可以帮助我吗?如果我能得到快速响应,那就太好了。
提前致谢!!
我是这样写应用程序的前端代码的
<div class="wizard-step">
<h3>Step 3: Check Eligibility</h3>
<div class="editor-label" style="width: 25%">
@Html.LabelFor(model => model.AccountNumber)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.AccountNumber)
</div>
<div class="editor-label" style="width: 25%">
@Html.LabelFor(model => model.MeterId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MeterId)
</div>
<div class="editor-label" style="width: 25%">
@Html.LabelFor(model => model.Program)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Program)
</div>
<div class="editor-label" style="width: 25%">
@Html.LabelFor(model => model.PeakLoad)
</div>
<div class="editor-field MB12">
@Html.CheckBoxFor(model => model.PeakLoad)
</div>
<div class="editor-label" style="width: 25%">
@Html.LabelFor(model => model.WifiBroadband)
</div>
<div class="editor-field MB12">
@Html.CheckBoxFor(model => model.WifiBroadband)
</div>
</div>
还有控制器代码
[HttpGet]
public ActionResult EnrollUser()
{
EnrollmentEntity model = new EnrollmentEntity();
BindAggregatorList(model);
BindCBLMethod(model);
BindDeviceManuList(model);
BindDeviceModelList(model);
BindDeviceTypeList(model);
BindProgramList(model);
return View(model);
}
[HttpPost]
public ActionResult EnrollUser(EnrollmentEntity model)
{
return View(model);
}
如果您试图保持原子性,您可以将每个步骤的数据保存在会话对象中,然后在用户完成向导后将所有内容保存在一起。您还可以 POST
从当前步骤和先前步骤到向导下一步的数据。
另一种选择是在向导的每个步骤之后将部分保存到您的数据库中。
更新 考虑到新的限制,并假设您只支持现代浏览器(IE8+ 以及几乎所有版本的 Firefox 和正在使用的 Chrome),您可以使用本地存储来存储数据。参见 Using the Web Storage API。
首先感谢你们对我的问题表现出兴趣并试图解决它。另一件事是任何答案都没有帮助我,或者可能是问题没有得到正确解释。但现在我得到了答案,我把它贴出来,希望对其他人有帮助。
我的问题是我必须在第二个屏幕中将我在第一个屏幕中插入的值显示为不可编辑,为此我刚刚在我想显示的地方使用了 @Model.Username
它。是的,对于服务器端验证,就像我在每个屏幕后发回数据并返回相同的模型。