C# 提交AJAX请求时的控制器方法

C# 提交AJAX请求时的控制器方法,c#,ajax,asp.net-mvc,C#,Ajax,Asp.net Mvc,我有一个MVC项目,它有一个包含多个表单的页面。页面上的大部分内容是基于用户提交的初始表单呈现的。当用户更新该页面上的信息时,我不希望整个页面刷新,我只需要它提交表单并停留在页面上。我已经尝试使用AJAX设置表单提交,但我不知道如何使控制器方法返回以完成此任务 表格: 这取决于你想要什么。Ajax.begin需要一个HTML片段。因此,您需要一个表示要在提交后替换的heatNameDiv的分部: public ActionResult ChangeHeatName(string heatName

我有一个MVC项目,它有一个包含多个表单的页面。页面上的大部分内容是基于用户提交的初始表单呈现的。当用户更新该页面上的信息时,我不希望整个页面刷新,我只需要它提交表单并停留在页面上。我已经尝试使用AJAX设置表单提交,但我不知道如何使控制器方法返回以完成此任务

表格:


这取决于你想要什么。Ajax.begin需要一个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(“MyActionReturningPartialView”)
和.success回调
函数(response){$('#heatNameDiv').innerHtml(response);}


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

您通常希望返回一个JsonResult。但是,如果我只是尝试保持在同一页面上,那会是什么样子?我会使用jquery
$.post
命令提交表单数据并返回JSON结果。如果结果表明成功,请告诉jQuery做一些事情,如果失败,请做其他事情。我还没有发现Ajax.BeginForm非常有用,但这是我个人的偏见。
 public ActionResult ChangeHeatName(string heatName, string updatedHeat)
    {
        string user = User.Identity.Name;
        HomeModel H = new HomeModel();
        H.ChangeHeatName(heatName, updatedHeat, user);
        return Content("Index");
    }
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);
    }