0

Ajax.ActionLinkを使用して深刻なasp.netmvcajaxリクエストを作成しています。

しかし、サーバーから同じURLを要求すると、異なるhtmlコンテナー(UpdateTargetId)がいっぱいになる可能性があります。すべて問題ありませんが、サーバーサイドでどのビューを返す必要があるかを知る必要があります。

フィドラーを見て、UpdateTargetId値について何も見つかりませんでした。次に、OnBegin javascriptメソッドでデータを追加できることに気付きましたが、UpdateTargetIdもわかりません。

だから今私はさまざまなhttpメソッド(postやgetなど)でハックを使用していますが、ハックの少ない解決策を見つけたいと思います。

4

2 に答える 2

2

私がこの質問を正しく理解しているなら、あなたはおそらくあなたの見解で次のようなことをしたいと思うでしょう:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<div id="testid" class='blah'></div>
@Ajax.ActionLink("Show Test Options", "ShowTestOptions", "Test", new { theVariableIWant = "Test" }, new AjaxOptions { UpdateTargetId = "testid", HttpMethod = "GET" })

そして、コントローラーに次のようなものがあります:

public class TestController : Controller
{
   [HttpGet]
   public PartialViewResult ShowTestOptions(string theVariableIWant)
   {
        ///Perform whatever operations you need to here.
        return PartialView();
   }
}

ただし、詳細をいただければ幸いです。

于 2012-07-02T16:01:46.293 に答える
0

それは完全ではなく、まだハックですが、おそらく唯一の方法です

jquery.unobtrusive-ajax.js で変更されました

$("a[data-ajax=true]").live("click", function (evt) {
        evt.preventDefault();
        asyncRequest(this, {
            url: this.href,
            type: "GET",
            data: []
        });
    });

$("a[data-ajax=true]").live("click", function (evt) {
        evt.preventDefault();
        asyncRequest(this, {
            url: this.href,
            type: "GET",
            data: [{ name: "targerId", value: this.getAttribute("data-ajax-update") }]
        });
    });

または asyncRequest メソッドに別のプッシュを追加します。

...
options.data.push({ name: "X-Requested-With", value: "XMLHttpRequest" });
options.data.push({ name: "targerId", value: element.getAttribute("data-ajax-update") });
...

目立たないコードを変更したくなく、Ajax.ActionLink を別のフラグを使用して ajax リクエスト (たとえば、[data-customajax=true]") を起動するカスタム ActionLink に変更して、それらを分離します。誰かがこれらの回答について質問がある場合は、i喜んでお手伝いします!

于 2012-07-17T14:37:58.863 に答える