2009-09-15 3 views
5

Hallo दोस्तों,सबसे अच्छा तरीका है JQuery के साथ यूआरएल के उपयोग करते समय ASP.NET MVC हार्डकोड करने नहीं

मैं jQuery के साथ ASP.NET MVC का उपयोग कर रहा है और अब यह करने के लिए महान जा रहा है। बस, एक सवाल है जो मुझे परेशान कर रहा है। मुझे jquery विधियों में यूआरएल कैसे संभालना चाहिए? मैं वास्तव में कड़ी मेहनत कोड यह नहीं करना चाहते हैं, यहाँ की तरह:

$(function() { 
     $.getJSON("/Home/List", function(data) { 
      var items = "---------------------"; 
      $.each(data, function(i, country) { 
       items += "" + country.Text + ""; 
      }); 
      $("#Countries").html(items); 
     }); 

     $("#Countries").change(function() { 
      $.getJSON("/Home/States/List/" + $("#Countries > option:selected").attr("value"), function(data) { 
       var items = "---------------------"; 
       $.each(data, function(i, state) { 
        items += "" + state.Text + ""; 
       }); 
       $("#States").html(items); 
      }); 
     }); 
    }); 

यह बेहद एचटीएमएल सहायक तरीकों का उपयोग करने के लिए इतना है कि मामले में MVC में लिंक, Html.ActionLink, Html.BeginForm की तरह बनाने के लिए सिफारिश की है कोई परिवर्तन होम कंट्रोलर को होम के बजाय माईहोम पर मैप किया गया है, इसमें कोई समस्या नहीं होगी।

तो, उदाहरण के लिए यूआरएल को कड़ी मेहनत कैसे न करें?

इसके अलावा, मैं एएसपी.NET अजाक्स का उपयोग नहीं करना चाहता क्योंकि मैं इस उत्तर asp-net-ajax-vs-jquery-in-asp-net-mvc से सहमत हूं।

धन्यवाद

उत्तर

6

आप एक से अधिक वैश्विक जावास्क्रिप्ट वैरिएबल निर्धारित कर सकते हैं:

<script type="text/javascript"> 
    var listUrl = '<%= Url.Action("Index", "Home") %>'; 
    var statesListUrl = '<%= Url.Action("States", "Home") %>'; 
</script> 

जो बाद में $ .getJSON तरीकों से इस्तेमाल किया जाएगा।

+0

यह ऐसा करने के लिए एक अच्छा तरीका लगता है। धन्यवाद –

+0

शायद आपको वैश्विक दायरे से बचना चाहिए, उन्हें बेहतर नामस्थान (उदा।) AjaxUrlStack.myurl1 ... – umpirsky

1

वास्तव में एक सरल और व्यावहारिक दृष्टिकोण मैं उपयोग कर रहा है, हर मास्टर पेज के शीर्ष पर कुछ इस तरह डाल करने के लिए है:

<script type="text/javascript"> 
    var baseUrl = '<%= Url.Resolve("~") %>'; 
</script> 

और फिर अपने सभी जावास्क्रिप्ट फ़ाइलें बाद में शामिल हैं, जब भी इसकी आवश्यकता हो तो baseUrl का उपयोग करना।

+0

धन्यवाद, आपके उत्तर के लिए मुकिद। यह वास्तव में अच्छी सलाह है जिसे मुझे आवेदन करने की आवश्यकता है। लेकिन मेरे लिए और अधिक महत्वपूर्ण बात यह है कि कैसे यूआरएल हार्ड कोड नहीं है, होम/इंडेक्स; उत्पाद/ShowAll आदि ... –

1

मुझे अक्सर जेएस में वर्तमान नियंत्रक और कार्रवाई की आवश्यकता होती है। यही कारण है कि मैंने इसे अपने मास्टरपेज में क्यों शामिल किया।

<script type="text/javascript"> 
    var controller = ''; 
    var action = ''; 
    controller = '<%= ViewContext.RouteData.GetRequiredString("controller")%>' ; 
    action = '<%= ViewContext.RouteData.GetRequiredString("action")%>' ; 
    </script> 
+0

एक महान तकनीक है, जो नियंत्रक नाम jquery से प्राप्त करने का तरीका खोजने का प्रयास कर रहा है – jaekie