在提交AJAX请求时使用

本文关键字:请求 提交 AJAX | 更新日期: 2023-09-27 18:08:37

我有一个MVC项目,其中有几个窗体的页面。页面上的大部分内容都是基于用户提交的初始表单呈现的。当用户更新该页面上的信息时,我不希望刷新整个页面,我只需要它提交表单并留在页面上。我已经尝试设置表单提交与AJAX,但我不知道什么使控制器方法返回来完成这一点。

形式:

<div id="HeatNameDiv" title="Change Heat Name">
@using (Ajax.BeginForm("ChangeHeatName", "Home", new AjaxOptions(){UpdateTargetId = "HeatNameDiv"}))
{
    <section>
        Heat Name:<input type="text" name="heatName" value="@Html.ValueFor(x => x.heatname)" style ="width:100px"/>
        Change to:<input type="text" name="updatedHeat" value="" style="width: 100px" />
        <input type="submit" name="ChangeHeatName" value="Change" />
    </section>
}

电流控制器:

 public ActionResult ChangeHeatName(string heatName, string updatedHeat)
    {
        string user = User.Identity.Name;
        HomeModel H = new HomeModel();
        H.ChangeHeatName(heatName, updatedHeat, user);
        return Content("Index");
    }

在提交AJAX请求时使用

这取决于您想要刷新的内容。Ajax。BeginForm需要一个HTML片段。所以你需要一个局部来表示提交后要替换的heatNameDiv:

public ActionResult ChangeHeatName(string heatName, string updatedHeat)
    {
        string user = User.Identity.Name;
        HomeModel H = new HomeModel();
        H.ChangeHeatName(heatName, updatedHeat, user);
        return PartialView("NameOfPartialView", H);
    }

我同意Jeremy的观点,因为Ajax。BeginForm没有那么灵活。我过去曾努力尝试过使用它,但它替换的是目标元素,而不是目标的innerHtml,这使得它在许多情况下都很困难。

使用$.ajax可以设置url: '@(Url.Action("MyActionReturningAPartialView"))',在。success回调中可以设置function(response) { $('#heatNameDiv').innerHtml(response); }

您调用的操作仍然返回一个PartialView