2012-06-07 14 views
5

मैं जो करने की कोशिश कर रहा हूं उसे स्पष्ट करने के लिए मैं सबसे अच्छा करने की कोशिश करूंगा।जावास्क्रिप्ट फ़ंक्शन से प्रॉम्प्ट बॉक्स मान पास करना- पोस्टबैक सी #

मुझे यह कहकर प्रस्तावना दें कि मैं सी # और एएसपी.नेट के लिए बहुत नया हूं और जावास्क्रिप्ट के साथ न्यूनतम अनुभव है।

मेरे पास एक जावास्क्रिप्ट फ़ंक्शन है जो एक प्रॉम्प्ट बॉक्स को आमंत्रित करता है। समग्र तस्वीर है - यदि इनपुट दर्ज किया गया है - यह डेटाबेस में एक कॉलम में सहेजा जाएगा।

मैं प्रॉम्प्ट बॉक्स से मूल्य को सी # में पोस्टबैक में पास करने पर एक रिक्त स्थान खींच रहा हूं।

function newName() 
{ 
    var nName = prompt("New Name", " "); 
    if (nName != null) 
    { 
     if (nName == " ") 
     { 
      alert("You have to specify the new name."); 
      return false; 
     } 
     else 
     { 
      // i think i need to getElementByID here??? 
      //document.forms[0].submit(); 
     } 
    } 
} 

यह है कि मैं क्या सी # में है:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     //I have other code that works here 
    } 
    else 
    { 
     //I'm totally lost here 
    } 
} 

मैं यह पता लगाने कैसे जावास्क्रिप्ट समारोह से इनपुट के लिए कि कॉल करने के लिए कोशिश कर रहा हूँ।

मैंने पिछले कुछ घंटों को ऑनलाइन और पुस्तकों में देखा है। अभिभूत हो गया

संपादित

मैं मैं क्या करने की कोशिश कर रहा हूँ फिट करने के लिए एक छोटे से tweeking किया ....

<asp:HiddenField ID="txtAction" runat="server" Value="" /> 

document.forms(0).txtAction.Value = "saveevent"; 
document.forms(0).submit(); 

यह पता लगाने की तालिका में अब स्ट्रिंग डालने के लिए कैसे की कोशिश कर रहा ... ..

string nEvent = Request.Form["event"]; 
    if (txtAction.Value == "saveevent") { 
        nName.Insert(); //am i on the right track? 
       } 
+0

form.sumbmit इसे करना चाहिए –

उत्तर

2

ठीक है, यहां एक संभावित तरीका है (अनचाहे लेकिन आपको मूल विचार देना चाहिए)। आप अपने फार्म पर एक छिपी हुई फ़ील्ड लगा सके शीघ्र का मूल्य धारण करने के लिए:

<input type="hidden" id="hiddenNameField" runat="server" value=""> 

फिर, मूल्य के लिए उपयोगकर्ता का संकेत छिपा क्षेत्र के लिए सेट, और फिर अपने प्रपत्र सबमिट:

document.getElementById('hiddenNameField').value = nName; 
document.forms(0).submit(); 

फिर आपके कोड-पीछे में आप केवल hiddenNameField.Value तक पहुंच सकते हैं।

0

यदि आप जावा स्क्रिप्ट का उपयोग करके पिछली तरफ विधि को कॉल करने का प्रयास कर रहे हैं तो आप वेब विधि दृष्टिकोण का उपयोग करने का प्रयास कर सकते हैं।

उदाहरण के लिए

आप एक समारोह है कि SendForm विधि

 function SendForm() { 
     var name = $("#label").text(); 
     PageMethods.SendForm(name, 
      OnSucceeded, OnFailed); 
    } 
    function OnSucceeded() { 
    } 
    function OnFailed(error) { 
    } 

कॉल करेंगे और आप विधि है कि जावास्क्रिप्ट से बुलाया जाएगा है।

[WebMethod(enableSession: true)] 
    public static void SendForm(string name) 
    { 

    } 

0

से कॉपी किया गया मैं तुम्हें AJAX अनुरोध यहाँ की जरूरत है। मैं jQuery का उपयोग करने का सुझाव देता हूं, क्योंकि कुत्ते आपके लिए काम करते हैं ... अन्यथा, आपको AJAX प्रसंस्करण के लिए पहले से ही लिखे गए सामान्य कोड को लागू करना होगा।निम्न में से एक के रूप में

कुछ:

function PromptSomewhere(/* some args if needed*/) 
{ 
    var nName = prompt("New Name", " "); 
    // Do process your prompt here... as your code in JS above. Not placed here to be more readable. 
    // nName is used below in the AJAX request as a data field to be passed. 

    $.ajax({ 
     type: "post", // may be get, put, delete also 
     url: 'place-the-url-to-the-page', 
     data { 
      name: nName 
      // You may put also other data 
     }, 
     dataType: "json", 
     error: PromptFailed, 
     success: OnPromptComplete 
    }); 
} 

function PromptFailed(xhr, txtStatus, thrownErr) // The arguments may be skipped, if you don't need them 
{ 
    // Request error handling and reporting here (404, 500, etc.), for example: 
    alert('Some error text...'); // or 
    alery(txtStatus); // etc. 
} 

function OnPromptComplete(res) 
{ 
    if(!res) 
     return; 

    if(res.code < 0) 
    { 
     // display some validation errors 
     return false; 
    } 

    // display success dialog, message, or whatever you want 

    $("div.status").html(result.message); 
} 

यह अतुल्यकालिक अनुरोध के साथ सर्वर से गतिशील रूप से डेटा भेजने के लिए कर सकेंगे। अब सी #:

using System.Web.Script.Serialization; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(IsPostBack && ScriptManager.GetCurrent(this).IsInAsyncPostBack) 
    { 
     string nName = Request.Form["name"]; 

     // do validation and storage of accepted value 
     // prepare your result object with values 



     result.code = some code for status on the other side 
     result.message = 'Some descriptive message to be shown on the page'; 

     // return json result 
     JavaScriptSerializer serializer = new JavaScriptSerializer(); 

     Response.Write(serializer.Serialize(result)); 
    } 
} 

नोट: आप ASP.NET MVC का उपयोग करते हैं 2 या उससे मुझे लगता है, आप JsonResult कार्यों और Request.IsAjaxRequest (मुझे लगता है कि नाम था), और कई अन्य सुविधाओं और सुधारों का उपयोग करने में सक्षम हो जाएगा एएसपी.नेट - एएसपी.नेट एमवीसी एमवीसी पैटर्न (आर्किटेक्चर) के आधार पर वेब अनुप्रयोग बनाने के लिए नया दृष्टिकोण है और अंततः कुछ समय में एएसपी.नेट पेजों को प्रतिस्थापित करेगा।

0

यह एक बहुत अच्छा स्रोत है और अपने प्रश्न का उत्तर शामिल हैं:

<script type="text/javascript"> 
function PostbackWithParameter(parameter) 
{ 
    __doPostBack(null, parameter) 
} 
</script> 

और अपने कोड में:

How to use __doPostBack()

मूल रूप से, अपने अन्य जे एस समारोह से PostbackWithParameter() फ़ंक्शन को कॉल करें - इसके बाद, उस पैरामीटर के लिए मान लें:

public void Page_Load(object sender, EventArgs e) 
{ 
    string parameter = Request["__EVENTARGUMENT"]; 
} 
संबंधित मुद्दे