2012-04-18 16 views
1

MVCのAjax ActionResultに追加データを追加する方法はありますか?MVC:Ajax ActionResultに余分なデータを追加する方法

コントローラに新しいPartialViewを作成し、それに余分なデータを追加して、Ajax OnSuccess関数で取得できるようにします。

カスタムデータを持つコントローラからJsonの結果を渡して、OnSuccess関数でそのデータを使用してみましたが、カスタムデータとHTMLは一切渡さないため、Ajax UpdateTarget divになりましたAjaxがHTMLではないJsonの結果でdivを塗りつぶすため、空白になります。

私のコントローラがPartialViewを返信して、私のUpdateTarget divが更新され、OnSuccess関数で使用できる独自のカスタムデータが更新されるようにしたいと思います。

ご協力いただければ幸いです。

おかげ マイク

+0

バンプ。これを受け入れる人は? – mighele

答えて

1

あなたのコントローラで次のメソッドを使用することができます使用して

protected string RenderPartialViewToString(string viewName, object model) 
    { 
     if (string.IsNullOrEmpty(viewName)) 
     { 
      viewName = ControllerContext.RouteData.GetRequiredString("action"); 
     } 

     ViewData.Model = model; 

     using (StringWriter sw = new StringWriter()) 
     { 
      ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); 
      ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); 
      viewResult.View.Render(viewContext, sw); 

      return sw.GetStringBuilder().ToString(); 
     } 
    } 

コールビューからこのアクション:

public string UpdateDivWithContent() 
    { 
     var yourModel = ... //make custom data to create your partial  
     return RenderPartialViewToString("YourPartialViewName", yourModel) 
    } 

を私は基本的なコントローラに、このメソッドを置きます手動のAjaxコール:

$.ajax({ 
    url: '@(Url.Action("UpdateDivWithContent","YourControllerName")' 
    type: 'POST', 
    data: { 
     //some params to be passed to the controller 
    }, 
    success: function (result) { 
     //result is an html string of your customized partial view 
     $("#yourDivId").html(result); 
    } 
});