C# 将actionresult绑定到MVC5中的按钮

C# 将actionresult绑定到MVC5中的按钮,c#,visual-studio,asp.net-mvc-5,C#,Visual Studio,Asp.net Mvc 5,您好,我想在点击按钮时运行这个actionresult,让它只更改被点击的文档的文档状态,但是我对AJAX、JavaScript和JQuery了解不够,无法实现这一点,这里的所有其他问题在这个主题上都相当模糊,我想知道你们是否可以帮忙 ActionResult代码 public ActionResult ChangeStatus(int? id) { if (id == null) { return new HttpStatusCodeResult(Ht

您好,我想在点击按钮时运行这个actionresult,让它只更改被点击的文档的文档状态,但是我对AJAX、JavaScript和JQuery了解不够,无法实现这一点,这里的所有其他问题在这个主题上都相当模糊,我想知道你们是否可以帮忙

ActionResult代码

 public ActionResult ChangeStatus(int? id)
 {
     if (id == null)
     {
         return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
     }
     Document document = db.Documents.Find(id);
     if (document.DocumentStatus == "Draft")
     {
         document.DocumentStatus = "Active";
         db.Entry(document).State = EntityState.Modified;
         db.SaveChanges();
         return View(document);
     }
     else
     {
         document.DocumentStatus = "Draft";
         db.Entry(document).State = EntityState.Modified;
         db.SaveChanges();
         return View(document);
     }
 }

如果你们能提供任何帮助,我们将不胜感激。

您可以在视图中使用本机Razor语法进行此操作。按钮经常与表单一起使用,因此您可以使用以下内容:

<h3>Some HTML/Razor stuff up here...</h3>

@using (Html.BeginForm("ChangeStatus", "ControllerName", FormMethod.Post, new { id = "docId" }))
{
<input type="submit" value="Click Me!" />
}
这里有一些HTML/Razor的东西。。。
@使用(Html.BeginForm(“ChangeStatus”、“ControllerName”、FormMethod.Post、new{id=“docId”}))
{
}
确保更新控制器的名称,并提供有效的文档id值

function AjaxPost(url, data, fnSuccess, fnError) {
    $.ajax({
        type: "POST",
        url: url,
        data: JSON.stringify(data),
        dataType: "json",
        contentType: 'application/json; charset=utf-8',
        success: Success,
        error: Error
    });
}


function Success() {
    console.log("Success");
}
function Error() {
    console.log("Error");
}



function ChangeStatusById() {

    AjaxPost("/ControllerName/ChangeStatus", {
        Id: id
    }, Success, Error);
}
您必须通过jQuery获取id

并将
[HttpPost]
属性添加到控制器

var id = $('#id').val();