2009-01-28 11 views
5

मेरे पास एक अजाक्स एक्शनलिंक है जो नियंत्रक विधि में एक स्ट्रिंग का अनुरोध करता है। मैं उस स्ट्रिंग को हाइपरलिंक की विशेषता में डालना चाहता हूं। HOW क्या मैं लक्ष्य आईडी तत्व का विशेषता फ़ील्ड निर्दिष्ट करता हूं?एएसपी.नेट एमवीसी: AJAX एक्शनलिंक- एक HTML विशेषता को लक्षित करें

<img id="CHANGE-MY-SRC" src=ViewData["src"] > 

<%=Ajax.ActionLink("Change IMG Source","actionChange",new AjaxOptions()   
UpdateTargetId="CHANGE-MY-SRC"})%> 

public string actionChange() 
{ 
    ViewData["src"]= "somethingNew"; 

    return ???????? 
} 

उत्तर

8

अजाक्स सहायकों के लिए डिफ़ॉल्ट व्यवहार इस का समर्थन नहीं करेंगे। हालांकि, आप एक कस्टम जावास्क्रिप्ट हैंडलर बना सकते हैं जो अजाक्स अनुरोध लौटाता है, और उसके बाद विशेषता

एक सामान्य जावास्क्रिप्ट फ़ाइल बनाएं (इसे मास्टर पेज में लोड करें, उदाहरण के लिए , तब

// Creates an Ajax OnComplete handler that will inject 
///the contents into the specified attribute, rather than the InnerHtml 
function createAttributeInjector(attributeName) { 
    return function(ajaxContext) { 
     if(ajaxContext.get_updateTarget() !== null) { 
      ajaxContext.get_updateTarget()[attributeName] = ajaxContext.get_data(); 
     } 
     // IMPORTANT: Suppress the default behavior! 
     return false; 
    } 
} 

जब आपके अजाक्स लिंक के निर्माण:) और इस समारोह जोड़ने

Ajax.ActionLink("Change IMG Source", "actionChange", new AjaxOptions() { 
    UpdateTargetId="CHANGE-MY-SRC", 
    OnCompleted="createAttributeInjector('src')" 
} 

अस्वीकरण: मैं यह एक परीक्षण देने के लिए नहीं कर पाए हैं, लेकिन मैं के साथ इसी तरह कार्य कर लेते हैं अजाक्स सहायक। अगर आपको कोई समस्या है तो मुझे अपने उत्तर के लिए टिप्पणियों में पोस्ट करें और मुझे मदद करने में खुशी होगी! अगर यह काम करता है, तो मुझे टिप्पणियों में भी बताएं!

आप स्रोत (you can get it on CodePlex), आप गुण की एक पूरी सूची आप OnCompleted हैंडलर से उपयोग कर सकते हैं के लिए MicrosoftMvcAjaxScript परियोजना में AjaxContext.cs फ़ाइल की जांच कर सकते हैं, तो

2

मुझे यकीन है कि आप वास्तव में क्या मतलब है नहीं कर रहा हूँ, लेकिन आप एचटीएमएल का एक सेट ActionLink विस्तार के कुछ संस्करणों गुण प्रदान कर सकते हैं।

Ajax.ActionLink(string linkText, 
       string action, 
       object routeValues, 
       AjaxOptions ajaxOptions, 
       object htmlAttributes) 

उदाहरण:

<%= Ajax.ActionLink("add", 
        "AddThing", 
        new { id = ViewData.Model.ID }, 
        new AjaxOptions { Confirm = "Are you sure?", 
             UpdateTargetId = "thingList" 
            }, 
        new { title = "Add a thing to the database." }); %> 
+0

लक्ष्य आईडी एक छवि टैग का है, और मैं टैग के src विशेषता को src = "new text" के रूप में बदलना चाहता हूं जब AJAX कॉल "नया टेक्स्ट" के साथ वापस आती है। – zsharp

0

बहुत सरल मुझे लगता है, आप Url.Action (जिस क्रिया को आप चाहते हैं वह स्ट्रिंग देता है जो आपको इच्छित स्ट्रिंग देता है, लेकिन आपको प्रतिक्रिया देने के बजाय Response.Write (...)

या इससे भी आसान, आप src = "<% = ViewData ["src"]%> "आपके टैग में!

मुझे लगता है कि आपके पास पहले से ही एक समाधान है, लेकिन वें अगली बार आपको समय बचा सकता है ..

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