0

データが beginform で送信されるときに、コントローラーからビューに 3 つの変数 (ビューバッグ) を送信する必要があります。現時点では、以下の AJAX 関数により、ポストバックする変数を 1 つしか取得できません。

JQUERY/AJAX

   function autosubmit() {


        $.ajax({
            type: 'POST',
            url: this.action,
            data: $('form').serialize(),
           success: function (result) {
                    $('#one').html(result); //ViewBag.one
                    $('#two').html(result); //ViewBag.two
                    $('#three').html(result); //ViewBag.three
                                     }

        });


    }

形:

@using (Html.BeginForm())
{
//form data automatically submits to controller
}


<div id="one">ajax data</div>
<div id="two">ajax data</div>
<div id="three">ajax data</div>

コントローラ

[HttpPost]
        public ActionResult Index(model stuff)
        {
         ViewBag.one = stuff.data1;
         ViewBag.two = stuff.data2;
         ViewBag.three = stuff.data3;
         Return(ViewBag.one, ViewBag.two,ViewBag.three)
         }
4

1 に答える 1

7

ViewBag/ViewData は忘れてください。まるで存在しなかったかのようです。

JSON を使用します。

[HttpPost]
public ActionResult Index(model stuff)
{
    var data = new 
    { 
        data1 = stuff.data1, 
        data2 = stuff.data2, 
        data3 = stuff.data3 
    };
    return Json(data);
}

そして消費します:

$.ajax({
    type: 'POST',
    url: this.action,
    data: $('form').serialize(),
    success: function (result) {
        $('#one').html(result.data1);
        $('#two').html(result.data2);
        $('#three').html(result.data3);
    }
});
于 2012-06-13T14:05:16.997 に答える