0

私はJqueryUIタブをいじり、AJAXを介してコンテンツを読み込んでいます。

私はJqueryWebサイトから例を試し、(期待どおりに)処理を実行しました。次に、次のようなデータをMVCコントローラーに送信してみました...

    public ActionResult AjaxTab(string stringtest)
    {
        return View();
    }

と私の見解...

<div class="demo">
<div id="tabs">
    <ul>
        <li><a href="#tabs-1">Preloaded</a></li>
        <li><a href="@Url.Action("AjaxTab", "Home")">Tab 1</a></li>
    </ul>
    <div id="tabs-1">
        <p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>
    </div>
</div>

と私のJquery...

<script type="text/javascript">
$(function () {
    $("#tabs").tabs({
        ajaxOptions: {
            data: {stringtest: "hello"},
            error: function (xhr, status, index, anchor) {
                $(anchor.hash).html(
                    "Couldn't load this tab. We'll try to fix this as soon as possible. " +
                        "If this wouldn't be a demo.");
            }
        }
    });

});

再び正常に動作します:)次に、JSONオブジェクトを作成して渡すことを望み、考えられるすべてのことを試しましたが、送信されません:(

これが私が試したラスなことです...

ビュー-同じ

コントローラ...

public ActionResult AjaxTab(JsonTest jsonTest)

新しいクラスが作成されました...

    public class JsonTest
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }        
}

およびJquery..。

<script type="text/javascript">
var json  =  {"jsonTest": { Id:1 , Name:"Daz", Description:"blah blah blah" }};
$(function () {
    $("#tabs").tabs({
        ajaxOptions: {
            data: JSON.stringify(json),
            error: function (xhr, status, index, anchor) {
                $(anchor.hash).html(
                    "Couldn't load this tab. We'll try to fix this as soon as possible. " +
                        "If this wouldn't be a demo.");
            }
        }
    });
});

今回はjsonTestでは何も得られません:(

何か案は??

4

2 に答える 2

1

モデルバインディングとajaxリクエストの「従来の」フラグを簡単に確認してください。これにより、JSONオブジェクトの逆シリアル化が爆破される可能性があります。

これを確認するには、コントローラーにブレークポイントを設定し、Requestオブジェクトを調べます。データは渡されたとおりに10対1であると思いますが、配列/オブジェクトのフォーマットが原因で正しく逆シリアル化されていません。

于 2012-09-06T16:23:13.523 に答える
0

これが私の計画Bでした

私がしたことは、タブを使用してページのAJAXロードを実行するのではなく、そのタブのselectイベントをキャッチして、ajax投稿を実行することでした(以下のように)

        $("#tabs").tabs({
        select: function(event, ui) {

            if (ui.index == 1) {
                var json  =  {"jsonTest": { Id:1 , Name:"Daz", Description:"blah blah blah" }};


                $.ajax({
                    url: '@Url.Action("AjaxTab", "Home")',
                    type: 'POST',
                    data: JSON.stringify(json),
                    contentType: 'application/json; charset=utf-8',

そしてこれはうまくいくようでした。

于 2012-09-07T07:47:28.043 に答える