8

UpdatetargetID の代わりに Ajax.ActionLink(...,...) を使用してページ全体を更新することは可能ですか?

従来の Html.ActionLink は POST メソッドではないため、私は Ajax.ActionLink を使用することを好みます。

私は試します:

@Ajax.ActionLink("Click me", "MyAction", "MyController", new { value = '1234' }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure ?" },  null) 

しかし、ページは更新されず、F5 を押さなければなりませんでした。

ありがとう。

4

2 に答える 2

14

gardarvalur によって提案された 2 つの方法を実際に組み合わせて、ページ全体を div でラップする必要のない MVC のようなコードを取得できます。次のように、 window.location.reload() 呼び出しを AjaxOptions オブジェクトの OnSuccess プロパティに移動します。

@Ajax.ActionLink("Click me", "MyAction", "MyController", new { value = '1234' }, new AjaxOptions { HttpMethod = "POST", OnSuccess="window.location.reload()" })

jQuery は関係ありません。MVC Ajax ActionLink の単純な古い JavaScript だけです。

于 2013-03-22T21:13:14.593 に答える
2

Jquery内でのdoin ajax呼び出しはどうですか? このようなもの。

<button onclick="SomeFunction()" type="button" >Click me</button>

そして、Jquery では次のようになります。

function SomeFunction()
{
    var url = '/MyController/MyAction/';

    $.ajax({
        type: "POST",
        url: url,
        data: { value: '1234' }, //if there are any parameters
        dataType: "html", //or some other type
        success: function (data) {
            window.location.reload(true);
            // or something in that area, maybe with the 'data'
        },
        error: function () {
        //some derp
        }
    });

私はあなたの質問を誤解していないことを願っています (そして、これは ajax.actionlink を正確に使用していないことを認識しています)。;)よろしく!

##########編集##########

または、ページ全体をラップする updatetargetid へのリンクを伝えるという、とてつもないアイデアかもしれません。次のようなものです。

@Ajax.ActionLink("Click me", "MyAction", "MyController", new { value = '1234' }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure ?", UpdateTargetId = "TheDivToUpdate" },  null)

次に、この div タグでページのコンテンツをラップします。

<div id="TheDivToUpdate">
    //The content of your page
</div>

私は知っています、最も美しい解決策ではありませんが、それはあなたにとってうまくいくでしょうか?

于 2012-11-29T18:11:44.113 に答える