2012-07-22 14 views
15

मेरे पास जावास्क्रिप्ट विधि onRowSelected है wchich पंक्तिबद्ध हो जाता है। HttpGet के साथ नियंत्रक की कुछ क्रिया में पंक्तिबद्ध कैसे पारित करें?रेजर व्यू में जावास्क्रिप्ट यूआरएल कार्रवाई

function onRowSelected(rowid, status) { 
     alert('This row has id: ' + rowid); 
     //url: @Action.Url("Action","Controller") 
     //post:"GET" 
     // Something like this? 
    } 

उत्तर

39

अपने नियंत्रक कार्रवाई अपेक्षा करता है कि एक आईडी क्वेरी स्ट्रिंग पैरामीटर:

var url = '@Url.Action("Action", "Controller")?id=' + rowid; 

या यदि आप मार्ग आप इस्तेमाल कर सकते हैं के हिस्से के रूप में यह पास करना चाहते हैं बदल देते हैं:

var url = '@Url.Action("Action", "Controller", new { id = "_id_" })' 
    .replace('_id_', rowid); 

अभी तक एक और संभावना अगर आप एक AJAX अनुरोध भेजने जा रहे हैं तो इसे POST बॉडी के हिस्से के रूप में पास करना है:

$.ajax({ 
    url: '@Url.Action("Action", "Controller")', 
    type: 'POST', 
    data: { id: rowid }, 
    success: function(result) { 

    } 
}); 

या एक क्वेरी स्ट्रिंग पैरामीटर के रूप में आप प्रयोग कर रहे हैं मिलता है:

$.ajax({ 
    url: '@Url.Action("Action", "Controller")', 
    type: 'GET', 
    data: { id: rowid }, 
    success: function(result) { 

    } 
}); 

सभी उन लगता है कि अपने नियंत्रक कार्रवाई निश्चित रूप से एक id पैरामीटर लेता है:

public ActionResult Action(string id) 
{ 
    ... 
} 

तो तुम कई मायनों देख सकते हैं एक ही लक्ष्य प्राप्त करने के लिए।

+0

मुझे आश्चर्य है कि पहला जवाब क्यों काम नहीं कर रहा है। AJAX जवाब अच्छी तरह से काम करता है। – nebula

+0

अंतिम उत्पन्न यूआरएल स्रोत कोड में कैसे दिखता है? –

+0

फायरबग में भी कोई ईवेंट ट्रिगर नहीं किया गया है। यूआरएल नहीं बदलता है। – nebula

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