gpt4 book ai didi

c# - 提交 AJAX 请求时的 Controller 方法

转载 作者:行者123 更新时间:2023-11-30 22:18:45 26 4
gpt4 key购买 nike

我有一个 MVC 项目,该项目的页面上有多个表单。页面上的大部分内容都是根据用户提交的初始表单呈现的。当用户更新该页面上的信息时,我不希望刷新整个页面我只需要它来提交表单并留在页面上。我尝试设置表单以使用 AJAX 提交,但我不知道如何让 Controller 方法返回以完成此操作。

表格:

<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>
}

当前 Controller :

 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.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(响应){ $('#heatNameDiv').innerHtml(响应); }

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

关于c# - 提交 AJAX 请求时的 Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15935852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com