MVC批准或不批准按钮

本文关键字:按钮 MVC | 更新日期: 2023-09-27 18:28:00

控制器

    [ActionName("Index")]
    [HttpPost]
    public ActionResult IndexPost(string button, int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        string buttonClicked = Request.Form["SubmitButton"];
        if(buttonClicked == "Accept")
        {
            CurrentApplication currentApplication = db.CurrentApplications.Find(id);
            currentApplication.AppStatus = "APPROVED";
            db.SaveChanges();
        }
        else if(buttonClicked == "Decline")
        {
            CurrentApplication currentApplication = db.CurrentApplications.Find(id);
            currentApplication.AppStatus = "UNAPPROVED";
            db.SaveChanges();
        }
        //Save Record and Redirect
        return RedirectToAction("Index");
    }

索引视图

<button type="submit" name="SubmitButton" value="Approve" class="btn btn-sm btn-success">Approve</button>
<button type="submit" name="SubmitButton" value="Unapprove" class="btn btn-sm btn-danger">Unapprove</button>

在我的"索引"视图中,我有一个表,其中有行数据,我可以使用2个按钮"批准"或"不批准"。我试过用这些http://www.scriptscoop.net/t/b7bd27aee268/c-asp-net-mvc-two-different-buttons-in-form-submit.html和ASP.NET MVC表单提交中的两个不同按钮。我希望在用户单击相应按钮时,状态值更改为"批准"或"不批准"。但我不确定为什么它不起作用,因为我试图用类似于编辑视图的方式对它进行编码。

MVC批准或不批准按钮

您可以将submit按钮的值作为Action方法的参数,现在您所要做的就是在Action中比较其值并执行所需的更改。在您的视图中,"批准"按钮的值为value="Approve","取消批准"按钮为value="Unapprove",而您将其与"Accept""Decline"进行比较。

[ActionName("Index")]
    [HttpPost]
    public ActionResult IndexPost(string SubmitButton, int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        string buttonClicked = SubmitButton;
        if(buttonClicked == "Approve")
        {
            CurrentApplication currentApplication = db.CurrentApplications.Find(id);
            currentApplication.AppStatus = "APPROVED";
            db.SaveChanges();
        }
        else if(buttonClicked == "Unapprove")
        {
            CurrentApplication currentApplication = db.CurrentApplications.Find(id);
            currentApplication.AppStatus = "UNAPPROVED";
            db.SaveChanges();
        }
        //Save Record and Redirect
        return RedirectToAction("Index");
    }

在HTML中,"批准"answers"取消批准"按钮的值分别为Approve and Unapprove。但是,在您的代码中,您将比较buttonClickedAcceptDecline

应该是这样的:

[ActionName("Index")]
[HttpPost]
public ActionResult IndexPost(string button, int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    string buttonClicked = Request.Form["SubmitButton"];
    if(buttonClicked == "Approve") // value of Approve button
    {
        CurrentApplication currentApplication = db.CurrentApplications.Find(id);
        currentApplication.AppStatus = "APPROVED";
        db.SaveChanges();
    }
    else if(buttonClicked == "Unapprove") // value of Unapprove button
    {
        CurrentApplication currentApplication = db.CurrentApplications.Find(id);
        currentApplication.AppStatus = "UNAPPROVED";
        db.SaveChanges();
    }
    //Save Record and Redirect
    return RedirectToAction("Index");
}

您可以尝试一下;

控制器:

    [ActionName("Index")]
    [HttpPost]
    public ActionResult IndexPost(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        var result = Request.Form["result"];
        CurrentApplication currentApplication = db.CurrentApplications.Find(id);
        currentApplication.AppStatus = result;
        db.SaveChanges();

        //Save Record and Redirect
        return RedirectToAction("Index");
    }

查看

<input type="hidden" name="result" id="result" />
<a  data-value="Approve" class="btn btn-sm btn-success submitButton">Approve</a>
<a  data-value="Unapprove" class="btn btn-sm btn-danger submitButton">Unapprove</a>

Javascript

<script>
   $('.submitButton').on('click', function (e) {
    e.preventDefault();
    $('#result').val($(this).data('value'));
    $('form').submit();
   });
</script>