如何在mvc控制器中创建确认框?

时间:2013-03-21 12:49:53

标签: c# asp.net-mvc asp.net-mvc-3 messagebox

我需要在mvc控制器中创建确认框?使用此“是”或“否”值,我需要在控制器中执行操作。我们怎么做?

示例代码:

    public ActionResult ActionName(passing value)
        {
             // some code 
             message box here
               if (true)
                     { true code}
              else { else code}
       }

5 个答案:

答案 0 :(得分:5)

您可以使用ActionLink

执行此操作
@Html.ActionLink(
    "Delete", 
    "DeleteAction", 
    "Product", 
    new { confirm = true, other_parameter = "some_more_parameter" }, 
    new { onclick = "return confirm('Do you really want to delete this product?')" })

如果用户确认,则链接参数将传递给控制器​​操作方法。

public ActionResult DeleteAction(bool confirm, string other_parameter)
{
    // if user confirm to delete then this action will fire
    // and you can pass true value. If not, then it is already not confirmed.

    return View();
}

<强>更新

您无法在控制器端显示消息框。但你可以这样做,如下面的

public ActionResult ActionName(passing value)
{
     // some code 
     message box here
     if (true){ ViewBag.Status = true }
     else { ViewBag.Status = false}

     return View();
}

并查看

<script type="text/javascript">
function() {
    var status = '@ViewBag.Status';
    if (status) {
        alert("success");
    } else {
        alert("error");
    }
}
</script>

但这些所有代码都不是优雅的方式。这是你的场景的解决方案。

答案 1 :(得分:5)

是的,您可以使用@Html.ActionLink执行此操作,正如AliRızaAdıyahşi所评论的那样。

订阅onclick

@Html.ActionLink事件

以下是实施:

@Html.ActionLink("Click here","ActionName","ControllerName",new { @onclick="return Submit();"})

在javascript中写下confirm框。

<script type="text/javascript">
function Submit() {
        if (confirm("Are you sure you want to submit ?")) {
            return true;
        } else {
            return false;
        }
    }
</script>

修改

试试这样:

<script type="text/javascript">
    function Submit() {
            if (confirm("Are you sure you want to submit ?")) {
                document.getElementById('anchortag').href += "?isTrue=true";
            } else {
                document.getElementById('anchortag').href += "?isTrue=false";
            }
            return true;
        }
</script>

@Html.ActionLink("Submit", "Somemethod", "Home", new { @onclick = "return Submit();", id = "anchortag" })

现在,您的控制器会根据isTrue查询字符串

执行一些操作
public ActionResult Somemethod(bool isTrue)
        {
            if (isTrue)
            {
                //do something
            }
            else
            {
                //do something
            }
            return View();
        }

答案 2 :(得分:3)

你不在Controller中创建确认框,但是在View中使用JQuery Dialog创建。 Controller已经在服务器内,因此您没有用户干预。 您的视图,是用户将选择选项,键入信息,单击按钮的位置... 您可以截取按钮单击,以显示该对话框,并仅在单击“是”按钮时提交帖子。 JQuery Dialog需要在页面上引用(jquery.js,jquery-ui.js,jquery.ui.dialog.js)脚本。

示例:

$(function(){
    $("#buttonID").click(function(event) {
        event.preventDefault();
        $('<div title="Confirm Box"></div>').dialog({
            open: function (event, ui) {
                $(this).html("Yes or No question?");
            },
            close: function () {
                $(this).remove();
            },
            resizable: false,
            height: 140,
            modal: true,
            buttons: {
                'Yes': function () {
                    $(this).dialog('close');
                    $.post('url/theValueYouWantToPass');

                },
                'No': function () {
                    $(this).dialog('close');
                    $.post('url/theOtherValueYouWantToPAss');
                }
            }
        });
    });
});

答案 3 :(得分:1)

我可以确认AliRızaAdıyahşi的解决方案效果很好。

您还可以自定义消息。在我的情况下,我们使用MVC和Razor,所以我可以这样做:

<td>
@Html.ActionLink("Delete", 
    "DeleteTag", new { id = t.IDTag }, 
    new { onclick = "return confirm('Do you really want to delete the tag " + @t.Tag + "?')" })
</td>

其中显示了一个包含其中指定的特定记录的对话框。也可以给确认对话框一个标题,还没有尝试过。

答案 4 :(得分:0)

  <a href="@Url.Action("DeleteBlog", new {id = @post.PostId})" class="btn btn-sm btn-danger" onclick="return confirm ('Are you sure want to delete blog?');">
                                <i class="glyphicon glyphicon-remove"></i> Delete