2009-06-07 11 views

उत्तर

60

आप ASP.NET MVC में एक आंशिक दृश्य का उपयोग समान व्यवहार प्राप्त करने के लिए कर सकता है। आंशिक दृश्य अभी भी सर्वर पर HTML का निर्माण कर सकते हैं, और आप बस (वास्तव में, MVC अजाक्स सहायकों यह आपके लिए सेट कर सकते हैं यदि आप MSFT अजाक्स पुस्तकालयों में शामिल करने को तैयार हैं) को उचित स्थान में HTML प्लग करने की जरूरत है।

मुख्य ध्यान में रखते हुए आप asynch अनुरोध सेटअप करने के लिए Ajax.Begin फार्म का उपयोग कर सकते हैं।

<% using (Ajax.BeginForm("Index", "Movie", 
          new AjaxOptions { 
           OnFailure="searchFailed", 
           HttpMethod="GET", 
           UpdateTargetId="movieTable",  
          })) 

     { %> 
      <input id="searchBox" type="text" name="query" /> 
      <input type="submit" value="Search" />    
    <% } %> 

    <div id="movieTable"> 
     <% Html.RenderPartial("_MovieTable", Model); %> 
    </div> 

एक आंशिक दृश्य उस पृष्ठ के अनुभाग को समाहित करता है जिसे आप अपडेट करना चाहते हैं।

<%@ Control Language="C#" Inherits="ViewUserControl<IEnumerable<Movie>>" %> 

<table> 
    <tr>  
     <th> 
      Title 
     </th> 
     <th> 
      ReleaseDate 
     </th>  
    </tr> 
    <% foreach (var item in Model) 
     { %> 
    <tr>   
     <td> 
      <%= Html.Encode(item.Title) %> 
     </td> 
     <td> 
      <%= Html.Encode(item.ReleaseDate.Year) %> 
     </td>  
    </tr> 
    <% } %> 
</table> 

फिर दोनों मामलों को संभालने के लिए अपने नियंत्रक कार्रवाई को सेटअप करें। आंशिक दृश्य परिणाम एसिच अनुरोध के साथ अच्छी तरह से काम करता है।

public ActionResult Index(string query) 
{   
    var movies = ... 

    if (Request.IsAjaxRequest()) 
    { 
     return PartialView("_MovieTable", movies); 
    } 

    return View("Index", movies);  
} 

आशा है कि मदद करता है।

+5

मुझे यह जवाब पसंद है! –

3

यदि आप asp.mvc के लिए नए हैं तो मैं आपको NerdDinner (source) नमूना एप्लिकेशन डाउनलोड करने की सलाह देता हूं। एमवीसी के साथ प्रभावी ढंग से काम करना शुरू करने के लिए आपको पर्याप्त जानकारी मिलेगी। उनके पास AJAX उदाहरण भी हैं। आपको पता चलेगा कि आपको पैनल की आवश्यकता नहीं है और अपडेट नहीं है।

4

मूल रूप से 'पारंपरिक सर्वर-नियंत्रण (ASP.NET AJAX लोगों सहित) काम नहीं करेगा बाहर के बॉक्स MVC के साथ ... पेज जीवन चक्र बहुत अलग है। MVC के साथ आप पृथक/छद्म स्टेटफुल बॉक्स WebForms आप में लपेटता की तुलना में अधिक सीधे अपने HTML धारा प्रदान कर रहे हैं।

'अनुकरण' एक MVC में UpdatePanel करने के लिए

, आप एक प्राप्त करने के लिए jQuery का उपयोग कर एक <DIV> को आबाद करने की सोच सकते हैं इसी तरह के परिणाम। एक वास्तव में सरल, केवल पढ़ने के लिए उदाहरण this 'search' page

पर HTML सरल है:

<input name="query" id="query" value="dollar" /> 
<input type="button" onclick="search();" value="search" /> 

'पैनल' के लिए डेटा JSON format में है - MVC इस स्वतः NerdDinner SearchController.cs

देखने के लिए कर सकते हैं
public ActionResult SearchByLocation(float latitude, float longitude) { 
     // code removed for clarity ... 
     return Json(jsonDinners.ToList()); 
    } 

और jQuery/जावास्क्रिप्ट भी

<script type="text/javascript" src="javascript/jquery-1.3.2.min.js"></script> 
    <script type="text/javascript"> 
    // bit of jquery help 
    // http://shashankshetty.wordpress.com/2009/03/04/using-jsonresult-with-jquery-in-aspnet-mvc/ 
    function search() 
    { 
    var q = $('#query').attr("value") 
    $('#results').html(""); // clear previous 
    var u = "http://"+location.host+"/SearchJson.aspx?searchfor=" + q; 
    $("#contentLoading").css('visibility',''); // from tinisles.blogspot.com 
    $.getJSON(u, 
     function(data){ 
      $.each(data, function(i,result){ 
      $("<div/>").html('<a href="'+ result.url+'">'+result.name +'</a>' 
          +'<br />'+ result.description 
          +'<br /><span class="little">'+ result.url +' - ' 
          + result.size +' bytes - ' 
          + result.date +'</span>').appendTo("#results"); 
      }); 
     $("#contentLoading").css('visibility','hidden'); 
     }); 
    } 
    </script> 
012 है

बेशक अपडेटपेनल का उपयोग इस से अधिक जटिल परिदृश्यों में किया जा सकता है (इसमें INPUTS, व्यूस्टेट का समर्थन करता है और विभिन्न पैनलों और अन्य नियंत्रणों में ट्रिगर्स का समर्थन करता है)। आप अपने MVC अनुप्रयोग में जटिलता की इस प्रकार की जरूरत है, मुझे डर है कि आप कुछ कस्टम विकास के लिए हो सकता है हूँ ...

+0

में UpdatePanel लागू करने के लिए इस हिस्से क्या मतलब है है ?? वर q = $ ('# क्वेरी')। attr ("मान") या क्या इसका मतलब यह है कि जब आप $ डाल दिया और क्या ('#query') मतलब –

+0

@ WingMan20-10 करता है, कि jQuery वाक्य रचना है। '$' jQuery में एक वैध फ़ंक्शन नाम है, और वे इसका उपयोग करते हैं।असल में, कई अन्य जावास्क्रिप्ट पुस्तकालय '$ 'का भी उपयोग करते हैं, इसलिए यदि आप पुस्तकालयों को जोड़ते हैं, तो आपको उन्हें अलग करने के लिए कदम उठाने की आवश्यकता है, हालांकि मैंने व्यक्तिगत रूप से इस तरह से कई libs का उपयोग नहीं किया है। –