2008-09-13 14 views
10

क्या एएसपी.NET में सर्वर कोड से प्रोग्रामबैक को पोस्टबैक ट्रिगर करना संभव है? मुझे पता है कि एक Response.Redirect या Server करना संभव है। किसी पृष्ठ पर रीडायरेक्ट करने के लिए ट्रांसफर करें, लेकिन सर्वर कोड (यानी में एक ही पृष्ठ पर पोस्टबैक ट्रिगर करने का कोई तरीका है, बिना किसी फॉर्म को सबमिट करने के लिए जावास्क्रिप्ट ट्रिकरी का उपयोग किए)?एएसपी.नेट - क्या सर्वर कोड से पोस्टबैक ट्रिगर करना संभव है?

उत्तर

10

Asp.net पोस्टबैक क्लाइंट से शुरू किया जाता है (आमतौर पर फॉर्म जमा करने)। मुझे यकीन नहीं है कि आप क्या हासिल करने की कोशिश कर रहे हैं। सर्वर के कुछ पक्ष page lifecyle ईवेंट पहले से ही निष्पादित किए गए हैं और आप जो करने का प्रयास कर रहे हैं वह पिछले ईवेंट हैंडलर को फिर से बढ़ा रहा है।

+0

लिंक टूटा हुआ है। मैं यहां एक हैक की कोशिश कर रहा हूं: http://bumbasblog.blogspot.com/2010/04/how-to-keep-session-alive-in-your-site.html, अगर यह काम करता है तो मैं अपनी टिप्पणी अपडेट करूंगा। हालांकि, यह सत्र को जीवित रखना है, और ओपी के सवाल से संबंधित नहीं है। मैं एक अलग दृष्टिकोण की कोशिश कर रहा हूँ। –

1

आप इसे अजाक्स अनुरोध के साथ कर सकते हैं। आपको पृष्ठ को सर्वर पर मतदान करना होगा। सर्वर के अनुरोध के बिना ब्राउजर को जानकारी को धक्का देने का कोई तरीका नहीं है। लेकिन कुछ जावास्क्रिप्ट जो पृष्ठभूमि में चलते हैं और प्रत्येक 5 सेकंड (या अधिक, आपकी आवश्यकताओं के आधार पर) सर्वर को चुनाव करते हैं, शायद सबसे अच्छा समाधान होगा।

APPEND

आप यह तरीका अपनाते हैं, तो आपको सर्वर वापस भेज सिर्फ एक हाँ या नहीं हो सकता है, या बस 0 या 1 पर किया जाए या नहीं पोस्टबैक प्रदर्शन किया जाना चाहिए निर्भर करता है। आपकी जरूरतों के आधार पर, वास्तव में AJAX के XML भाग का उपयोग करने का कोई कारण नहीं है। बस एक सरल असिंक्रोनस अनुरोध चलाएं, संभवतः कुछ क्वेरीस्ट्रिंग चर के साथ, और एक साधारण शब्द, या यहां तक ​​कि प्रतिक्रिया के रूप में एक संख्या वापस प्राप्त करें। इस तरह आप जावास्क्रिप्ट को एक्सएमएल आउट बनाने और पार्स करने के लिए रख सकते हैं यदि इसकी आवश्यकता नहीं है।

+3

क्या आपने अपना प्रश्न भी पढ़ा? – FlySwat

2

पोस्टबैक एक फॉर्म जमा करने के कारण होते हैं। आपको उन्हें क्लाइंट से शुरू करने की आवश्यकता है।

1

यदि आप सर्वर से संचार शुरू करना चाहते हैं, तो मतदान के बाद, माइक्रोसॉफ्ट के SignalR पर एक नज़र डालें। इसके लिए सबसे आसान संदर्भ, और सिग्नलआर एक उदाहरण कोड के हिस्से के रूप में एक चैट अनुप्रयोग है। आप पीछे कोड से संदेश शुरू करने और उन्हें अपने पृष्ठ पर जावास्क्रिप्ट घटनाओं के रूप में प्राप्त करने में सक्षम होंगे।

सर्वर कोड भेजने के लिए: सर्वर संदेशों को पकड़ने के लिए

using System; 
using System.Web; 
using Microsoft.AspNet.SignalR; 
namespace SignalRChat 
{ 
    public class ChatHub : Hub 
    { 
     public void Send(string name, string message) 
     { 
      // Call the broadcastMessage method to update clients. 
      Clients.All.broadcastMessage(name, message); 
     } 
    } 
} 

क्लाइंट कोड 'chat.client.broadcastMessage' की ओवरराइड है:

<script type="text/javascript"> 
     $(function() { 
      // Declare a proxy to reference the hub. 
      var chat = $.connection.chatHub; 
      // Create a function that the hub can call to broadcast messages. 
      chat.client.broadcastMessage = function (name, message) { 
       // Html encode display name and message. 
       var encodedName = $('<div />').text(name).html(); 
       var encodedMsg = $('<div />').text(message).html(); 
       // Add the message to the page. 
       $('#discussion').append('<li><strong>' + encodedName 
        + '</strong>:&nbsp;&nbsp;' + encodedMsg + '</li>'); 
      }; 
      // Get the user name and store it to prepend to messages. 
      $('#displayname').val(prompt('Enter your name:', '')); 
      // Set initial focus to message input box. 
      $('#message').focus(); 
      // Start the connection. 
      $.connection.hub.start().done(function() { 
       $('#sendmessage').click(function() { 
        // Call the Send method on the hub. 
        chat.server.send($('#displayname').val(), $('#message').val()); 
        // Clear text box and reset focus for next comment. 
        $('#message').val('').focus(); 
       }); 
      }); 
     }); 
    </script> 
0

नेट के नए संस्करण का उपयोग करने वालों के लिए, 'this.GetPostBackEventReference(...)' अप्रचलित होने के बाद आपको Page.ClientScript.GetPostBackEventReference का उपयोग करना होगा। इसके अलावा शायद Page.ClientScript.RegisterStartupScript(...

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