将actionresult绑定到MVC5中的按钮

时间:2017-03-01 01:39:52

标签: c# visual-studio asp.net-mvc-5

您好我想在按钮点击上运行此动作结果并让它只更改按钮被单击的文档的文档状态但是我不太了解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);
     }
 }

你们给予的任何帮助都会受到赞赏..

2 个答案:

答案 0 :(得分:2)

您可以在视图中使用本机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!" />
}

确保更新控制器的名称,并提供有效的文档ID值。

答案 1 :(得分:2)

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;

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

并向控制器添加[HttpPost]属性。