2012-09-02 17 views
6

मैं Jquery Dailog में आंशिक दृश्य वापस करना चाहता हूं और व्यूमोडेल ऑब्जेक्ट को विशेष नियंत्रक कार्रवाई में पास करना चाहता था, यह कैसे करें?Url.Action के साथ मॉडल कैसे पास करें?

देखें

@Html.DropDownListFor(model => model.SelectedCountry, new SelectList(Model.CountryList, "CountryCode", "CountryName"), "---SELECT COUNTRY---", 
            new { @class = "chosen", @onchange = "this.form.action='/Home/Index'; this.form.submit(); " }) 
<input type="button" id="button1" value="Push"/> 
<div id="dialog" title="Report" style="overflow: hidden;"></div> 

जे एस

<script type="text/javascript"> 
$(function() { 
    $('#dialog').dialog({ 
     autoOpen: false, 
     width: 400, 
     resizable: false, 
     title: 'Report', 
     modal: true, 
     open: function() { 
      //here how to pass viewmodel 
      $(this).load("@Url.Action("CreatePartial")"); 
     }, 
     buttons: { 
      "Close": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 

    $('#button1').click(function() { 
     $('#dialog').dialog('open'); 
    }); 
}); 

नियंत्रक

public ActionResult CreatePartial(HomeViewModel homeViewModel) 
{ 
     return PartialView("_CreatePartial", homeViewModel); 
} 

वर्तमान में, "homeViewModel.SelectedCountry" शून्य है, Jquery में मॉडल कैसे पास करें?

उत्तर

3

आप निर्माण में JSON-हेल्पर का उपयोग करके एक JSON वस्तु में मॉडल परिवर्तित, बस करने के लिए अपना अनुरोध संशोधित:

$(this).load('@Url.Action("CreatePartial")',@Html.Raw(Json.Encode(Model))); 

@ Html.Raw एचटीएमएल-एन्कोडिंग को रोकने के लिए की जरूरत है।

मैंने इसका परीक्षण किया और यह काम किया।

+3

का उपयोग करें और पोस्ट डेटा के रूप में डेटा पास (कृपया ध्यान दें कि यह के रूप में यूआरएल लंबाई प्रतिबंध (कम से कम कई ब्राउज़रों में है, छोटे मॉडल के साथ ही काम करेंगे)। –

+0

आप सही, IE हैं इसके लिए जाना जाता है। केवल इसी कोड को जोड़ने के लिए धन्यवाद। – developer10214

+0

thanx बहुत कुछ ... – user584018

4

यदि आप AJAX का उपयोग कर रहे हैं, तो आपको सर्वर पर मॉडल पास करने के लिए HTTP GET का उपयोग नहीं करना चाहिए। इसके बजाय HTTP POST ($().ajax({method: 'POST'}) में के रूप में $().ajax({method: 'POST', data: @Html.Raw(Json.Encode(Model))}))

संबंधित मुद्दे