0

内部に 2 つのボタンがありHtmlForm、非常にうまく機能していました。区別するために、actionName でボタンの名前を渡します。以下を見てください:

    [HttpPost]
    public ActionResult Index(string button, QuizCompletedViewModel q)
    { // QuizCompletedViewModel is the model of my razor view
         ...            
    }


@using (Html.BeginForm("Index", "Quiz", FormMethod.Post, new { id = "form" }))
{
<div>
    <!-- Old code using two buttons for post  -->
    <div class="float-right">
@*        <input name="button" type="submit" value="save" />
        <input name="button" type="submit" value="done" />*@
        <input name="button" type="button" value="done" />
    </div>

    <div id="dialog-form">
        <input name="button" type="button" value="Cancel" />
        <input name="button" type="submit" value="Save" />
        <input name="button" type="submit" value="Done" />
    </div>
</div>


<div id="question-container">
@for (int i = 0; i < Model.Questions.Count; i++) {
    ...
}
</div>
}

次に、現在のビューの 2 つのボタンを変更し、上記のようにこれら 2 つのボタンを含むポップを表示する必要があります ( id="dialog-form")。この時点で、ユーザーがボタンを押して古いコードのように POST を実行するときに、JQuery を使用するのは少し難しくなります。

手を貸してもらえますか?

4

1 に答える 1

1

これはあなたの助けになると思います.必要に応じて微調整する必要があります.Jqueryダイアログは私のコード例で[続行]ボタンを表示し、関数をそれにバインドします.Asp.net Webforms __doPostBackを何かに置き換えることができます. MVC ページでポストバックが発生します。

 $("#dialog").dialog({
                        autoOpen: false,
                        height: 380,
                        width: 650,
                        modal: true,
                        close: function () {
                            $('#btnCreateAccount').button('refresh');
                        },
                        buttons: {
                            'Continue': function () {
                                $(this).dialog('close');
                                __doPostBack($("#<%=btnCreateAccount.ClientID %>").attr("name"), '');
                            }
                        }
                    });
于 2013-02-06T02:54:53.690 に答える