जवाबों:
आप यह कोशिश कर सकते हैं:
Page.ClientScript.RegisterStartupScript(this.GetType(),"CallMyFunction","MyFunction()",true);
Page.ClientScript.RegisterClientScriptBlockआवश्यक है इसके बजाय जानकारी के लिए इस पोस्ट को देखें । 2. यह ध्यान देने योग्य हो सकता है कि MyFunction () को काम करने के लिए, MyFunction () को फॉर्म टैग या उनके अंदर परिभाषित किया जाना चाहिए, लेकिन </ form> एंडिंग टैग के बाद (अन्यथा ऑब्जेक्ट अपेक्षित त्रुटि नहीं होगी) होते हैं)
ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "text", "openDep()", true);काम करता है। this.GetType()मेरे लिए एक त्रुटि फेंकता है।
asp:UpdatePanelएक बटन के साथ लिपटे और लिखा हो। जिसके कारण पृष्ठ पोस्टबैक हो जाता है।
C # से JavaScript: आप निम्न की तरह पेज पर चलाने के लिए स्क्रिप्ट ब्लॉक रजिस्टर कर सकते हैं:
ClientScript.RegisterStartupScript(GetType(),"hwa","alert('Hello World');",true);
alert()अपने फ़ंक्शन नाम के साथ भाग बदलें ।
जावास्क्रिप्ट से C # विधि को कॉल करने के लिए आप उपयोग ScriptManagerया कर सकते हैं jQuery। मैं व्यक्तिगत रूप से उपयोग करता हूं jQuery। आपको उस विधि को सजाने की ज़रूरत है जिसे आप जावास्क्रिप्ट से WebMethodविशेषता के साथ कॉल करना चाहते हैं । आपके द्वारा C # विधि (कॉल PageMethod) के संबंध में अधिक जानकारी के jQueryलिए डेव वार्ड के पद का संदर्भ ले सकते हैं ।
पीछे से कोड से एक जावास्क्रिप्ट फ़ंक्शन को कॉल करना
चरण 1 अपने जावास्क्रिप्ट कोड जोड़ें
<script type="text/javascript" language="javascript">
function Func() {
alert("hello!")
}
</script>
चरण 2 अपने वेबफार्म में 1 स्क्रिप्ट मैनेजर जोड़ें और 1 बटन भी जोड़ें
स्टेप 3 इस कोड को अपने बटन क्लिक ईवेंट में जोड़ें
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "Func()", true);
ScriptManagerइस उत्तर में उपयोग करते समय काम करता है , Page.ClientScriptअन्य उत्तरों की तरह नहीं। asp:UpdatePanelस्वीकृत उत्तर के तहत टिप्पणी से संबंधित हो सकता है ।
आप सीधे यह नहीं कर सकते। मानक WebForms में जावास्क्रिप्ट की व्याख्या ब्राउज़र और सर्वर द्वारा C # की जाती है। आप जावास्क्रिप्ट का उपयोग करके सर्वर से एक विधि को कॉल करने के लिए क्या कर सकते हैं।
WebMethodके रूप में attributeलक्ष्य के तरीकों में।ScriptManagerसेटिंग जोड़ें ।EnablePageMethodstruePageMethods।ऐशे ही:
public partial class Products : System.Web.UI.Page
{
[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public static List<Product> GetProducts(int cateogryID)
{
// Put your logic here to get the Product list
}
ScriptManagerपरPage<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
function GetProductsByCategoryID(categoryID)
{
PageMethods.GetProducts(categoryID, OnGetProductsComplete);
}
सर्वर से एक जावास्क्रिप्ट फ़ंक्शन को कॉल करने के लिए जिसका आप उपयोग कर सकते हैं RegisterStartupScript:
ClientScript.RegisterStartupScript(GetType(),"id","callMyJSFunction()",true);
GetProducts()फ़ंक्शन केवल एक कोड-पीछे फ़ंक्शन है जो MVC ऐप में एक नियंत्रक में रहता है, इसलिए टैग जो भी फ़ंक्शन आप एक नियंत्रक में रखना चाहते हैं, उसके ऊपर जाते हैं जिसे आप जावास्क्रिप्ट से कॉल करना चाहते हैं। ।
एक और चीज जो आप कर सकते हैं, वह है सत्र चर बनाना जो पीछे दिए गए कोड में सेट हो जाता है और फिर उस चर की स्थिति की जाँच करें और फिर अपनी जावास्क्रिप्ट चलाएँ। अच्छी बात यह है कि आप अपनी स्क्रिप्ट को वहीं चलाने की अनुमति देंगे, जहाँ आप यह जानना चाहते हैं कि क्या आप चाहते हैं कि यह DOM या विश्व स्तर पर चले।
कुछ इस तरह: पीछे कोड:
Session["newuser"] = "false"
जावास्क्रिप्ट में
var newuser = '<%=Session["newuser"]%>';
if (newuser == "yes")
startTutorial();
आप नहीं कर सकते। कोडबाइंड सर्वर पर चल रहा है जबकि जावास्क्रिप्ट क्लाइंट पर चल रहा है।
हालाँकि, आप <script type="text/javascript">someFunction();</script>अपने आउटपुट में जोड़ सकते हैं और इस तरह जेएस फ़ंक्शन को तब बुलाया जा सकता है जब ब्राउज़र आपके मार्कअप को पार्स कर रहा है।
आप शाब्दिक उपयोग कर सकते हैं:
this.Controls.Add(new LiteralControl("<script type='text/javascript'>myFunction();</script>"));
IIRC कोड के पीछे सर्वराइड संकलित किया गया है और जावास्क्रिप्ट को ग्राहक पक्ष की व्याख्या की गई है। इसका मतलब है कि दोनों के बीच कोई सीधा संबंध नहीं है।
दूसरी ओर आप जो कर सकते हैं वह है AJAX नामक निफ्टी टूल के माध्यम से क्लाइंट और सर्वर संवाद। http://en.wikipedia.org/wiki/Asynchronous_JavaScript_and_XML
कोड के पीछे यह कोशिश करो और यह 100% काम करेगा
कोड की इस पंक्ति को आप फ़ाइल के पीछे कोड में लिखें
string script = "window.onload = function() { YourJavaScriptFunctionName(); };";
ClientScript.RegisterStartupScript(this.GetType(), "YourJavaScriptFunctionName", script, true);
और यह वेब फॉर्म पेज है
<script type="text/javascript">
function YourJavaScriptFunctionName() {
alert("Test!")
}
</script>
ScriptManager.RegisterStartupScript(this, this.Page.GetType(),"updatePanel1Script", "javascript:ConfirmExecute()",true/>
काम करने का उदाहरण: _
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage2.Master" AutoEventWireup="true" CodeBehind="History.aspx.cs" Inherits="NAMESPACE_Web.History1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
function helloFromCodeBehind() {
alert("hello!")
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div id="container" ></div>
</asp:Content>
कोड के पीछे
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace NAMESPACE_Web
{
public partial class History1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this, GetType(), "displayalertmessage", "helloFromCodeBehind()", true);
}
}
}
संभावित नुकसान: -
CodeBehind="History.aspx.cs" गलत पृष्ठ की ओर इशारा कर रहा हैमैं यहाँ बहुत सारे उत्तरों का उल्लेख कर रहा हूँ ScriptManager.RegisterStartupScriptऔर यदि आप ऐसा करने जा रहे हैं, तो यह सही तरीका नहीं है। सही तरीका उपयोग करना है ScriptManager.RegisterScriptBlock([my list of args here])। कारण यह है कि जब आपका पेज लोड होता है (इसलिए नाम RegisterStartupScript नाम), तो आपको केवल RegisterStartupScript का उपयोग करना चाहिए।
VB.NET में:
ScriptManager.RegisterClientScriptBlock(Page, GetType(String), "myScriptName" + key, $"myFunctionName({someJavascriptObject})", True)
C # में:
ScriptManager.RegisterClientScriptBlock(Page, typeof(string), "myScriptName" + key, $"myFunctionName({someJavascriptObject})", true);
बेशक, मुझे आशा है कि यह बिना कहे चला जाता है कि आपको अपने प्रमुख पहचानकर्ता के साथ कुंजी को बदलने की आवश्यकता है और संभवतः यह सब एक उप / फ़ंक्शन / विधि में स्थानांतरित करना चाहिए और कुंजी और someJavascriptObject में पास होना चाहिए (यदि आपकी जावास्क्रिप्ट विधि की आवश्यकता है तो आपका arg एक है जावास्क्रिप्ट वस्तु)।
MSDN डॉक्स:
https://msdn.microsoft.com/en-us/library/bb338357(v=vs.110).aspx
ScriptManager.RegisterStartupScript(Page, GetType(), "JavaFunction", "AlertError();", true);
अपने फ़ंक्शन का उपयोग करना पर्याप्त है
यह मैंने कैसे किया है।
HTML मार्कअप एक लेबल और बटन नियंत्रण दिखाते हुए निम्नानुसार है।
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblJavaScript" runat="server" Text=""></asp:Label>
<asp:Button ID="btnShowDialogue" runat="server" Text="Show Dialogue" />
</div>
</form>
</body>
जावास्क्रिप्ट समारोह यहाँ है।
<head runat="server">
<title>Calling javascript function from code behind example</title>
<script type="text/javascript">
function showDialogue() {
alert("this dialogue has been invoked through codebehind.");
}
</script>
</head>
जावास्क्रिप्ट फ़ंक्शन को ट्रिगर करने के लिए कोड यहाँ है।
lblJavaScript.Text = "<script type='text/javascript'>showDialogue();</script>";
यह मेरे लिए काम करता है
object Json_Object=maintainerService.Convert_To_JSON(Jobitem);
ScriptManager.RegisterClientScriptBlock(this,GetType(), "Javascript", "SelectedJobsMaintainer("+Json_Object+"); ",true);
चूंकि मुझे एक समाधान नहीं मिला जो कोड के पीछे था, जिसमें कोशिश करना शामिल है ClientScript और ScriptManagermutanic और ऑरलैंडो हेरेरा की तरह इस सवाल में कहा (वे दोनों किसी भी तरह विफल), मैं एक सामने के अंत समाधान है कि दूसरों को अगर करने के लिए बटन क्लिक का इस्तेमाल करता है प्रदान करेंगे वे मेरे जैसे ही पद पर हैं। यह मेरे लिए काम किया:
HTML मार्कअप:
<asp:button ID="myButton" runat="server" Text="Submit" OnClientClick="return myFunction();"></asp:button>
जावास्क्रिप्ट:
function myFunction() {
// Your JavaScript code
return false;
}
मैं बस एक ASP.NET बटन का उपयोग कर रहा हूं जो OnClientClickसंपत्ति का उपयोग करता है, जो क्लाइंट-साइड स्क्रिप्टिंग फ़ंक्शन को आग लगाता है, जो कि जावास्क्रिप्ट है। यहां ध्यान देने योग्य मुख्य बातें returnफ़ंक्शन कॉल में और फ़ंक्शन में ही कीवर्ड का उपयोग हैं । मैंने ऐसे डॉक्स पढ़े हैं जो उपयोग नहीं करते हैं returnलेकिन फिर भी काम करने के लिए बटन क्लिक करें - किसी तरह यह मेरे लिए काम नहीं करता है। return false;समारोह में बयान निर्दिष्ट करता है एक पोस्टबैक नहीं होना चाहिए। आप OnClientClickसंपत्ति में उस कथन का उपयोग भी कर सकते हैं:OnClientClick="myFunction() return false;"
मैंने कोड बिहाइंड में ScriptManager का इस्तेमाल किया और इसने ठीक काम किया।
ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "CallMyFunction", "confirm()", true);
यदि आप ASPPend में UpdatePanel का उपयोग कर रहे हैं। फिर, स्क्रिप्ट टैग के साथ अपडेट किया गया UpdatePanel नाम और 'फ़ंक्शन नाम' दर्ज करें।
धन्यवाद "लाइको", बस उसके जवाब में एक टिप्पणी जोड़ें।
string jsFunc = "myFunc(" + MyBackValue + ")";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "myJsFn", jsFunc, true);
'चर में एकल उद्धरण ( ) जोड़े गए , अन्यथा यह त्रुटि संदेश देगा:
string jsFunc = "myFunc('" + MyBackValue + "')";
आप CodeBehind से एक जावास्क्रिप्ट फ़ंक्शन को कॉल नहीं कर सकते, क्योंकि CodeBehind फ़ाइल में वह कोड होता है जो वेब सर्वर पर सर्वर साइड को निष्पादित करता है। जावास्क्रिप्ट कोड क्लाइंट की तरफ वेब ब्राउजर में निष्पादित होता है।
आप ScriptMethod विशेषता का उपयोग करके जावास्क्रिप्ट के माध्यम से कॉल करने योग्य पृष्ठों पर C # विधियों को उजागर कर सकते हैं ।
आप एक CodeBehind से जावास्क्रिप्ट को कॉल नहीं कर सकते हैं - यह कोड केवल क्लाइंट पर मौजूद है।