提交表单asp.net后阻止重新加载页面

时间:2014-05-23 06:59:01

标签: asp.net-mvc

所以我得到了这个div。在这个div我有一个textarea和它的可编辑,所以我把它放在一个表单提交更改,它工作到目前为止,但我有一些困扰我一点点: 在提交并保存对数据库的更改后,它会刷新页面,但我只想保存更改而不执行任何其他操作。现在我的问题是如何阻止它刷新或重定向,只保存更改?

这是我的控制器:

namespace ChangeLogManager___Mit_Vorlage.Controllers
{
    public class BeschreibungController : Controller
    {


        public JsonResult getText(int xVersionID)
        {
            ProgrammInfo lInfo = new ProgrammInfo();
            var lBeschreibung = lInfo.getBeschreibung(xVersionID);
            return Json(lBeschreibung, JsonRequestBehavior.AllowGet);
        }

        public ActionResult SaveText(BeschreibungModel xData)
        {
             using (var ctx = new ChangeLog_DEVEntities())
             {
                 var lVersion = (from p in ctx.Version where p.ID == xData.ccVersionID select p).FirstOrDefault();
            // var lVersion = ctx.Version.Where(p => p.ID == xData.ccVersionID).FirstOrDefault();
            lVersion.Changelog = xData.ccBeschreibung;
            ctx.SaveChanges();
        }


        return RedirectToAction("Index", "Home");
    }

}

我知道RedirectToAction会刷新。是否有可能替代它......没有什么,只是保存所做的更改?

这是我的div(它是表格所在的索引页面中的局部视图):

@model Domain.src.Daten.BeschreibungModel



<link rel="stylesheet" type="text/css" href="~/Content/Site.css" />

@Html.TextAreaFor(x => x.ccBeschreibung)
@Html.HiddenFor(x => x.ccVersionID)

我希望有人可以帮助我 (对不起,如果我的英文有任何错误)
在此先感谢:)

1 个答案:

答案 0 :(得分:2)

您需要在按钮点击事件中执行以下操作:

$("#UpdateUserForm").submit(function (e)
    {
        var isValid = $("#UpdateUserForm").valid();
        if (!isValid)
            return;

        //This is important as it prevents the form being submitted twice
        e.preventDefault();

        $.ajax({
            type: "POST",
            url: $("#UpdateUserForm").attr("action"),
            data: $("#UpdateUserForm").serialize(),
            success: function (response)
            {                    
                var status = '';
                status = response.Status;
                ShowAlert(response.Status, response.Message, status.toLowerCase());
            }
        }).error(function () {
            ShowAlert("An Error Occurred", "An error occurred while attempting to process your request. If the problem persists, please contact your administrator.", "error");
        });
    });