2012-06-13 2 views
0

Мне нужно отправить 3 переменные (viewbags) в представление из контроллера, когда данные отправляются в beginform. На данный момент я могу получить только 1 переменную для возврата из-за функции AJAX ниже.MVC BeginForm - возвращает три различные строки строки ajax с контроллера

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> 

CONTROLLER

[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) 
     } 

ответ

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); 
    } 
});