15

mvc コントローラーで確認ボックスを作成する必要がありますか? この「はい」または「いいえ」の値を使用して、コントローラーでアクションを実行する必要があります。どうやってそれをするのですか?

サンプルコード:

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

5 に答える 5

7

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>

しかし、これらすべてのコードはエレガントな方法ではありません。これはあなたのシナリオの解決策です。

于 2013-03-21T13:03:45.343 に答える
6

@Html.ActionLinkはい、 AliRıza Adı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();
        }
于 2013-03-21T13:04:27.630 に答える
5

JQueryダイアログを使用して、コントローラーに確認ボックスを作成しませんが、ビューには作成します。コントローラーは既にサーバー内にあるため、ユーザーとのやり取りはありません。一方、ビューは、ユーザーがオプションを選択したり、情報を入力したり、ボタンをクリックしたりする場所です...ボタンのクリックをインターセプトして、そのダイアログを表示し、オプションが「はい」の場合にのみ投稿を送信できます」がクリックされます。

JQuery ダイアログには、ページで参照されているjquery.jsjquery-ui.jsjquery.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');
                }
            }
        });
    });
});
于 2013-03-21T12:57:11.523 に答える
1

AliRıza Adı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>

その中に名前が付けられた特定のレコードを含むダイアログが表示されました。確認ダイアログにタイトルを付けることも可能かもしれませんが、まだ試していません。

于 2013-10-23T01:04:04.423 に答える