表单提交并重定向到同一页面,无需重新渲染

时间:2014-02-03 23:08:25

标签: c# asp.net-mvc forms razor

我的MVC应用程序中有一个更大的网页表单。 当我单击“保存”按钮时,表单将被提交并保存值,最后我将重定向到同一页面/表单。 但它重新呈现整个表单,当它已经加载并且没有必要时。 我怎么能避免这种情况? 我希望SAVE按钮的行为如下:保存所有,但继续我的位置。

我的控制器代码:

    [HttpPost]
    [ValidateInput(false)]
    public ActionResult FormCol(FormCollection collection)
    {
        ...
        if (Request.Form["DocumentId"] != null)
        {
        ...
        return RedirectToAction("FormCol", new { id = DocumentId });
    }

查看:

<input type="hidden" value="@document.Id" name="DocumentId" />

1 个答案:

答案 0 :(得分:3)

您需要通过Ajax / jquery发布您的表单:

$.ajax({
    url: '/someController/FormCol?variable1=' + $("#input1").val() + '&variable2=' + $("#input2").val(),
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    success: function (data) {
        alert(data); //This is where you would do something based upon a successful save, such as alerting the user to their new document ID or something.
    },
    error: function () {
        alert("error"); //This is where you know that your save failed.
    }
});

并更改您的Controller操作返回Json:

    public JsonResult FormCol(string variable1, string variable2)
    {
        //do saving stuff here
        return Json(new  { id = DocumentId });
    }