带MVC的Ajax.BeginForm不会采取我的行动

时间:2013-08-10 20:11:18

标签: asp.net .net ajax jquery asp.net-mvc-4

我在使用MVC中的Ajax表单时遇到问题。我从哪里得到以下错误:

POST http:// localhost:50778 / Evaluation / Setup / [object%20NodeList] 404(Not Found)

似乎没有添加操作或调用任何简单的验证。在oter页面上它似乎工作。我已经删除了下面的基础知识,它仍然无法正常工作。有什么想法吗?

编辑:作为一种解决方法,我使用jquery提交表单,但我真的不认为我需要这样做。

<div id="form-message"></div>
@{Ajax.BeginForm("UpdateEvaluation", "Setup", new AjaxOptions { UpdateTargetId = "form-message", InsertionMode = InsertionMode.Replace}, new { @id = "evaluation-setup" });}

@Html.HiddenFor(model => model.fk_baa)
@Html.HiddenFor(model => model.lock_setup)


<div class="form-actions">
    <p><b>Note</b>: There is no spell check on this site. You may wish to create text in Word or another word processor and then copy-and-paste into the system. </p>
    <button name="action" type="submit" value="save" class="btn btn-primary">Save</button>
    <button id="apply-lock" name="action" type="submit" class="btn btn-success exempt" value="lock"><span class="ico fa"></span> Lock Setup</button>
</div>

@{Html.EndForm();}

这是我的行动

 [HttpPost]
    public ActionResult UpdateEvaluation(SetupEvaluationModel model, string action)
    {
        var valid = ModelState.IsValid;
        if (action.ToUpper().Equals("LOCK"))
        {
            return View("_Validation", model.Save(true));
        }
        else
        {

            return View("_Validation", model.Save());
        }
    }

1 个答案:

答案 0 :(得分:2)

String action重命名为操作签名中的其他名称。您还必须重命名您的按钮名称。使用现在的代码,jquery.unobtrusive-ajax.js提交处理程序正在尝试路由到按钮对象而不是正确的字符串URL路由。