我必须允许用户移动到下一个或上一个表单,我只需要在导航上保存模型。除了使用提交之外,还有其他方法可以将模型传回控制器吗?因为我需要重定向到其他可能的页面。
答案 0 :(得分:1)
您可以将模型对象放在提交,重定向的TempData集合中,然后再将其读回。例如:
[HttpPost]
public ActionResult FirstForm(FirstFormModel model) {
TempData["TempModelStorage"] = model;
return RedirectToAction("SecondForm");
}
public ActionResult SecondForm() {
var firstModel = TempData["TempModelStorage"] as FirstFormModel;
// check for null, use as appropriate, etc.
return View(...);
}
此处有更多详情:http://msdn.microsoft.com/en-us/library/dd394711(v=vs.100).aspx
答案 1 :(得分:0)
您可以使用jQuery ajax在这些按钮单击事件上异步保存数据。
假设您的视图是这样的
@using(Html.BeginForm("Save","Items"))
{
<div>
Name : @Html.TextBoxFor(s=>s.Name)
<input type="button" class="navigBtns" value="Prev" />
<input type="button" class="navigBtns" value="Next" />
</div>
}
你的脚本是
$(function(){
$(document).on("click",".navigBtns",function() {
e.preventDefault();
var _this=$(this);
$.post(_this.closest("form").attr("action"), _this.closest("form").serialize(),
function(res){
//check res variable value and do something as needed
// (may be redirect to another page /show/hide some widgets)
});
});
});
假设您的控制器中有一个名为Save
的操作方法来处理保存部分。
答案 2 :(得分:0)
给出了一篇关于此的简洁文章。
基本上,你真的传递了html按钮的名称。
在视图表单中
<input type="submit" name="btnPrev" />
<input type="submit" name="btnNext" />
在控制器中 控制器
public ActionResult DoStuff(ModelClass mc,string btnPrev,string btnNext)
{
string actionString = "previousPage";
if(btnNext != null)
actionString = "nextPage";
return RedirectToAction(actionString,"Controller")
}