MVC批准或拒绝按钮

时间:2015-12-24 06:15:06

标签: c# asp.net-mvc asp.net-mvc-4 button

控制器

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

在我的索引视图中,我有一个表格,其中有数据行我可以&#34;批准&#34;或&#34;拒绝&#34;使用2个按钮。我尝试使用这些http://www.scriptscoop.net/t/b7bd27aee268/c-asp-net-mvc-two-different-buttons-in-form-submit.htmlASP.NET MVC two different buttons in form submit。当用户单击相应的按钮时,我希望状态值更改为“批准”或“拒绝”。但是我不确定为什么它不起作用,因为我尝试编码它与编辑视图类似。

3 个答案:

答案 0 :(得分:3)

您可以将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");
    }

答案 1 :(得分:0)

在HTML中,“批准”和“取消批准”按钮的值分别为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");
}

答案 2 :(得分:0)

你可以试试这个;

控制器:

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