【问题标题】:Buttons within dialog boxes and how to get the respective button value on form submit对话框中的按钮以及如何在表单提交时获取相应的按钮值
【发布时间】:2013-02-20 23:51:32
【问题描述】:

我有一个具有表单的剃刀视图。在表单中有一个名为上传的按钮。上传按钮发布到一个运行良好的操作方法。

我想添加一个模态框确认,当他们点击上传按钮时会出现,现在在模态框中我想要两个按钮。一个会说“Normal Parsing”,另一个会说“Buffer Parsing”。一旦他们按下对话框中的任一按钮,表单将提交给 action 方法,并且在 action 方法中我想查看他们按下了哪个对话框按钮,“Normal Parsing”或“Buffer Parsing”。

这就是我到目前为止的对话框,我只需要看看控制器将如何获得按下按钮的值。谢谢大家!!

function getParsingRoute(){
  var buttonPressed;
    .dialog({
                modal: true,
                width: 600,
                title: 'Parsing Values Confirmation',
                buttons: {
                    "Normal Parsing": function () {
                        buttonPressed = "Normal";
                    },
                    "Buffer Parsing": function () {
                        buttonPressed = "Buffer
                    }
                }
            })
}

  @using (Html.BeginForm("Create", "RunLogEntry", FormMethod.Post, new { id = "form", enctype = "multipart/form-data" }))
    {

    <button name="submit" class="art-button" type="submit" value="Upload" onclick="getParsingRoute()" style="width: 100px">Upload</button>
}

【问题讨论】:

  • 也许您应该通过 javascript 调用操作。这些操作将是附加的发送参数,即buttonPressed
  • 让按钮的点击处理程序填写表单中的隐藏字段。
  • @jack 它是 MVC,上传按钮在局部视图中。我的偏好是不为此使用任何 AJAX 调用
  • @woocash 除了对话框中的 ajax 帖子之外还有其他选择
  • 查看 WooCaSh 的回答,我认为应该可以。

标签: javascript asp.net-mvc


【解决方案1】:

@Barmar 评论启发的解决方案:

function getParsingRoute(e){
e.stopPropagation();
    .dialog({
        modal: true,
        width: 600,
        title: 'Parsing Values Confirmation',
        buttons: {
            "Normal Parsing": function () {
                $("#hiddenInput").val("Normal Parsing");
            },
            "Buffer Parsing": function () {
                $("#hiddenInput").val("Buffer Parsing");
            }
        }
    })
$("#form").submit();
}

 @using (Html.BeginForm("Create", "RunLogEntry", FormMethod.Post, new { id = "form", enctype = "multipart/form-data" }))
    {
    <input name="inputName" type="hidden" id="hiddenInput" value="" />
    <button name="submit" class="art-button" type="submit" value="Upload"  onclick="getParsingRoute()" style="width: 100px">Upload</button>
}

【讨论】:

  • 嘿,控制器中的朋友,我怎么知道值是多少?
  • 我不确定,但可能是:var value = Request["inputName"];
  • sorry woocash 一个问题,对话框正在显示,但它会自动关闭并提交表单。它不会暂停并让用户选择对话框中的按钮。我需要在 dalog 框中添加 return false 吗?
  • 好的,所以我在提交时在表单中添加了一个事件以返回 false,并且这次对话框不会消失。但是,当他们单击对话框中的按钮时,没有任何反应,表单不会发布到控制器操作方法
  • 现在试试我 2 分钟前添加的这些行。
【解决方案2】:

尝试一下:

function getParsingRoute(){
  var buttonPressed;
    .dialog({
        modal: true,
        width: 600,
        title: 'Parsing Values Confirmation',
        buttons: {
            "Normal Parsing": function () {
                 $.ajax({
                    url: "http://example.com",
                    type: "POST",
                    data: contactForm.serialize() + "&buttonPresed=Normal Parsing" 
                }).done(function (data) {
                    //done
                })
            },
            "Buffer Parsing": function () {
                $.ajax({
                    url: "http://example.com",
                    type: "POST",
                    data: contactForm.serialize() + "&buttonPresed=Buffer Parsing" 
                }).done(function (data) {
                    //done
                })
            }
        }
    })
}

此代码仅向您展示如何做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多