2011-01-14 13 views
7

मूल रूप से, मेरे पास एएसपीनेट AJAX सक्षम उपयोगकर्ता नियंत्रण है, और अब मैं केवल एक साधारण स्ट्रिंग मान वापस करना चाहता हूं, कुछ जेएस में इस्तेमाल होने के बाद मैं फायरिंग कर रहा हूं AJAX अनुरोध किया जाता है।कोड से asp.net AJAX endrequest

मैं अपर्याप्त विधि के साथ झुका रहा हूं, जिसे मैंने पहले ही अपवाद हैंडलिंग के लिए उपयोग करने के लिए सेट अप किया है, जो ठीक काम करता है। लेकिन क्या स्ट्रिंग वैल्यू को वापस करने का कोई तरीका नहीं है?

सबसे पहले मैंने सोचा कि मैं Response.Write() के माध्यम से ऐसा कर सकता हूं; लेकिन args.get_response() पसंद नहीं करते हैं जब आप यह गारंटी देते हैं - क्या कोई मुझे सही दिशा में इंगित कर सकता है?

धन्यवाद!

उत्तर

11

आप ScriptManager.RegisterDataItem विधि का उपयोग Sys.WebForms.PageRequestManager के साथ कर सकते हैं। , निम्नलिखित परीक्षण पृष्ठ जो जब आप बटन पर क्लिक करें यह स्क्रिप्ट प्रबंधक के साथ और क्लाइंट साइड यह EndRequest संभालती है और उस डेटा आइटम मिल पर डेटा आइटम पंजीकृत करता है,

<%@ Page Language="C#" AutoEventWireup="true" Inherits="WebApplication1._Default" %> 

<script runat="server"> 
    protected void btTest_Click(object sender, EventArgs e) 
    { 
     ScriptManager1.RegisterDataItem(btTest, "Your value to pass to the client"); 
    } 
</script> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:ScriptManager ID="ScriptManager1" runat="server"> 
     </asp:ScriptManager> 
     <asp:UpdatePanel ID="upTest" runat="server"> 
      <ContentTemplate> 
       <asp:Button ID="btTest" runat="server" Text="Click Me" OnClick="btTest_Click" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </div> 
    </form> 
</body> 
<script language="javascript" type="text/javascript"> 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 

    function endRequestHandler(sender, args) { 
     var dataItems = args.get_dataItems()['<%= btTest.ClientID %>']; 
     if (dataItems != null) 
      alert(dataItems); 
    } 
</script> 
</html> 
-1

शायद मैं आपकी समस्या को समझ में नहीं आता पर विचार करें लेकिन उस अतिरिक्त जेएस कॉल के साथ क्या उपयोगकर्ता नियंत्रण करना पड़ा? आप बस जेएस को उपयोगकर्ता नियंत्रण से प्रतिपादित कर रहे हैं?

वैसे भी, आईएमओ आपको स्ट्रिंग मान वापस करने के लिए एएसपी.NET वेब हैंडलर (* .ashx) या HttpHandler का उपयोग करना चाहिए और उस अतिरिक्त जेएस के साथ उस हैंडलर को कॉल करना चाहिए।

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