如果我需要2个提交按钮,如何保存我的MVC4模型?

时间:2014-04-21 16:07:01

标签: c# asp.net-mvc-4

我必须允许用户移动到下一个或上一个表单,我只需要在导航上保存模型。除了使用提交之外,还有其他方法可以将模型传回控制器吗?因为我需要重定向到其他可能的页面。

3 个答案:

答案 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)

给出了一篇关于此的简洁文章。

MVC Wizard Example

基本上,你真的传递了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")
}