উত্তর:
আপনি এটি চেষ্টা করতে পারেন:
Page.ClientScript.RegisterStartupScript(this.GetType(),"CallMyFunction","MyFunction()",true);
Page.ClientScript.RegisterClientScriptBlock পরিবর্তে প্রয়োজন হয় । ২. এটি উল্লেখ করার মতো হতে পারে যে মাই ফাংশন () এর কাজ করার জন্য, মাই ফাংশন () ফর্ম ট্যাগগুলির আগে বা তার ভিতরে বাছাই করতে হবে তবে </ translation> শেষের ট্যাগের পরে নয় (অন্যথায় কোনও প্রত্যাশিত প্রত্যাশিত ত্রুটি ঘটবে) ঘটবে)
ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "text", "openDep()", true);কাজ করে। this.GetType()আমার জন্য একটি ত্রুটি নিক্ষেপ।
asp:UpdatePanelএবং একটি বোতাম ইভেন্টে লিখিত হলে এটি কাজ করে না । যার ফলে পৃষ্ঠাটি পোস্টব্যাক হয়।
সি # জাভাস্ক্রিপ্ট থেকে: আপনি নীচের মত পৃষ্ঠাতে চালনার জন্য স্ক্রিপ্ট ব্লকটি নিবন্ধন করতে পারেন:
ClientScript.RegisterStartupScript(GetType(),"hwa","alert('Hello World');",true);
alert()আপনার ফাংশন নামের সাথে অংশ প্রতিস্থাপন ।
জাভাস্ক্রিপ্ট থেকে সি # পদ্ধতি কল করার জন্য আপনি 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গৃহীত উত্তরের অধীনে মন্তব্য সম্পর্কিত হতে পারে ।
আপনি সরাসরি এটি করতে পারবেন না। স্ট্যান্ডার্ড ওয়েবফোর্মে জাভাস্ক্রিপ্ট ব্রাউজার দ্বারা ব্যাখ্যা করা হয় এবং সি # সার্ভার দ্বারা। জাভাস্ক্রিপ্ট ব্যবহার করে সার্ভার থেকে কোনও পদ্ধতিতে কল করতে আপনি যা করতে পারেন তা হ'ল।
WebMethodহিসাবে ব্যবহার করুন attribute।ScriptManagerসেটিং যুক্ত করুনEnablePageMethodstrue ।PageMethods।এটার মত:
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()ফাংশনটি কেবল একটি কোড-পেছনের ফাংশন যা কোনও এমভিসি অ্যাপ্লিকেশনটিতে একটি নিয়ামক হিসাবে বাস করবে, তাই আপনি জাভাস্ক্রিপ্ট থেকে কল করতে চান এমন একটি নিয়ন্ত্রণকারীর মধ্যে আপনি যে ফাংশনটি রাখতে চান তা উপরে ট্যাগগুলি রেখে যায় so ।
আপনি যা করতে পারেন তা হ'ল একটি সেশন ভেরিয়েবল তৈরি করা যা পিছনের কোডটিতে সেট হয়ে যায় এবং তারপরে সেই ভেরিয়েবলের অবস্থা পরীক্ষা করে তারপরে আপনার জাভাস্ক্রিপ্ট চালানো হয়। ভাল জিনিস এটি আপনার স্ক্রিপ্টটি ডম বা বিশ্বব্যাপী চালাতে চান কিনা তা নির্ধারণের পরিবর্তে আপনি যেখানে চান সেখানে চালানোর অনুমতি দেবে।
এর মতো কিছু: পিছনে কোড:
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>"));
আইআইআরসি কোড বিহাইন্ড সার্ভারসাইড সংকলিত এবং জাভাস্ক্রিপ্ট ক্লায়েন্ট পাশ ব্যাখ্যা করা হয়। এর অর্থ উভয়ের মধ্যে কোনও সরাসরি যোগসূত্র নেই।
আপনি অন্যদিকে যা করতে পারেন তা হ'ল ক্লায়েন্ট এবং সার্ভারের সাথে আজেএক্স নামে একটি নিফটি সরঞ্জামের মাধ্যমে যোগাযোগ করা যায়। 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)।
ভিবি.নেটে:
ScriptManager.RegisterClientScriptBlock(Page, GetType(String), "myScriptName" + key, $"myFunctionName({someJavascriptObject})", True)
সি # তে:
ScriptManager.RegisterClientScriptBlock(Page, typeof(string), "myScriptName" + key, $"myFunctionName({someJavascriptObject})", true);
অবশ্যই, আমি আশা করি এটি বলার অপেক্ষা রাখে না যে আপনাকে আপনার কী সনাক্তকারী দিয়ে কীটি প্রতিস্থাপন করতে হবে এবং সম্ভবত এটি সমস্ত একটি সাব / ফাংশন / পদ্ধতিতে স্থানান্তরিত করা উচিত এবং কী এবং কিছু জাভাস্ক্রিপ্টঅবজেক্টে পাস করা উচিত (যদি আপনার জাভাস্ক্রিপ্ট পদ্ধতির প্রয়োজন হয় যে আপনার আর্গ একটি জাভাস্ক্রিপ্ট অবজেক্ট)।
এমএসডিএন ডক্স:
https://msdn.microsoft.com/en-us/library/bb338357(v=vs.110).aspx
ScriptManager.RegisterStartupScript(Page, GetType(), "JavaFunction", "AlertError();", true);
আপনার ফাংশন ব্যবহার যথেষ্ট
এইভাবে আমি এটি করেছি।
এইচটিএমএল চিহ্নিতকরণ নীচে লেবেল এবং বোতাম নিয়ন্ত্রণ দেখায়।
<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এবংScriptManager mutanic এবং অরল্যান্ডো হেরেরা মত এই প্রশ্নের বলেন (তারা উভয় একরকম ব্যর্থ হয়েছে), আমি একটি ফ্রন্ট-এন্ড সমাধান যা অন্যদের যদি বাটন ক্লিক সদ্ব্যবহার অফার পাবেন তারা আমার মতো একই অবস্থানে আছে এটি আমার পক্ষে কাজ করেছে:
এইচটিএমএল মার্কআপ:
<asp:button ID="myButton" runat="server" Text="Submit" OnClientClick="return myFunction();"></asp:button>
javascript:
function myFunction() {
// Your JavaScript code
return false;
}
আমি কেবল একটি এএসপি.নেট বোতাম ব্যবহার করছি যা OnClientClickসম্পত্তিটি ব্যবহার করে যা ক্লায়েন্ট-সাইড স্ক্রিপ্টিং ফাংশনগুলিকে জ্বালিয়ে দেয় যা জাভাস্ক্রিপ্ট। এখানে মূল বিষয়গুলি লক্ষ্য করার জন্য হ'ল returnফাংশন কলে এবং ফাংশনে নিজেই কীওয়ার্ডটির ব্যবহার । আমি দস্তাবেজগুলি পড়েছি যা ব্যবহার করে না returnতবে তবুও কাজ করতে বোতামটি ক্লিক করতে পারে - কোনওভাবে এটি আমার পক্ষে কাজ করে না। return false;ফাংশনে বিবৃতি উল্লেখ করে একটি postback হওয়া উচিত নয়। আপনি OnClientClickসম্পত্তিটিতে এই বিবৃতিটি ব্যবহার করতে পারেন :OnClientClick="myFunction() return false;"
আমি কোড বিহাইন্ডে স্ক্রিপ্টম্যানেজার ব্যবহার করেছি এবং এটি দুর্দান্ত কাজ করেছে।
ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "CallMyFunction", "confirm()", true);
আপনি যদি এএসপি ফ্রন্টএন্ডে আপডেটপ্যানেল ব্যবহার করেন। তারপরে, আপডেটপ্যানেলের নাম এবং স্ক্রিপ্ট ট্যাগগুলির সাথে সংজ্ঞায়িত 'ফাংশন নাম' লিখুন।
"লিকো" ধন্যবাদ, কেবল তার উত্তরে একটি মন্তব্য যুক্ত করুন।
string jsFunc = "myFunc(" + MyBackValue + ")";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "myJsFn", jsFunc, true);
'পরিবর্তনশীলটিতে একক উদ্ধৃতি ( ) যুক্ত করা হয়েছে, অন্যথায় এটি ত্রুটির বার্তা দেবে:
string jsFunc = "myFunc('" + MyBackValue + "')";
আপনি কোডবিহাইন্ড থেকে জাভাস্ক্রিপ্ট ফাংশন কল করতে পারবেন না, কারণ কোডবিহাইন্ড ফাইলে এমন একটি কোড রয়েছে যা ওয়েব সার্ভারে সার্ভার সাইড চালায়। জাভাস্ক্রিপ্ট কোড ক্লায়েন্ট পক্ষের ওয়েব ব্রাউজারে কার্যকর করে।
স্ক্রিপ্টমেথোদ অ্যাট্রিবিউটটি ব্যবহার করে জাভাস্ক্রিপ্টের মাধ্যমে কল করার জন্য কোডবিহীন পৃষ্ঠাগুলিতে আপনি সি # পদ্ধতি প্রকাশ করতে পারেন ।
আপনি কোডবিহাইন্ড থেকে জাভাস্ক্রিপ্ট কল করতে পারবেন না - এই কোডটি কেবল ক্লায়েন্টের মধ্যেই বিদ্যমান।