多个提交按钮asp.net mvc 5无法正常工作

时间:2015-07-15 21:43:08

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

我按照SO中建议的例程,使用了两个同名的按钮。

我的视图中有两个提交按钮。

 <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="SaveAndAddMore" name="command" class="btn btn-default" />
            <input type="submit" value="SaveAndContinue" name="command" class="btn" />

        </div>
    </div>

在控制器中,我正在检查(或至少要检查)传递的命令的值

     [HttpPost]
     [ValidateAntiForgeryToken]
     public ActionResult CreateEducation([Bind(Include = "DegreeEarned,Description,Institution,AcquiredDate,EducationStartDate,EducationEndDate,Department,InstitutionAddress,ReferenceName,ReferencePhoneNumber,ReferenceEmail")] Education ed, Command command)
     {
        if (ModelState.IsValid)
        {

            var user = userManager.FindById(User.Identity.GetUserId());
            user.ExpertInfo.Educations.Add(ed);
            db.SaveChanges();
            if (command == Command.SaveAndAddMore)
                return RedirectToAction("CreateEducation");
            else
                return RedirectToAction("CreateWorkExperience");
        }

        return View(ed);
    }

然而/当我点击SaveAndAddMore按钮(具有默认类的按钮)时,我的控制器方法会使用正确的命令值正确调用,一切都很好。 直到我点击SaveAndContinue。在此实例中,控制器未传递任何命令值。

  

参数字典包含参数的空条目   &#39;命令&#39;非可空类型&#39; xxx.Models.Command&#39;方法   &#39; System.Web.Mvc.ActionResult CreateEducation(Experts.Models.Education,   Experts.Models.Command)&#39;在   &#39; xxx.Areas.Expert.Controllers.ExpertInfoesController&#39 ;.一个   可选参数必须是引用类型,可空类型或be   声明为可选参数。参数名称:参数

Command类型是枚举

public enum Command { SaveAndAddMore, SaveAndNext, Save, Delete }

我哪里出错了?

1 个答案:

答案 0 :(得分:3)

正如你所说,{参数}在Action参数中是一个枚举:

Command

因此,给予按钮的任何值都需要与Emum值相同,因此您的第一个按钮的工作值与Enum值相同,即public enum Command { SaveAndAddMore, SaveAndNext, Save, Delete } 。将第二个按钮的值更改为SaveAndAddMore将按预期工作。所以你改变后的div将是:

SaveAndNext