Вызов функции JavaScript из CodeBehind - PullRequest
138 голосов
/ 20 апреля 2011

Может ли кто-нибудь привести хорошие примеры вызова функции JavaScript из CodeBehind и наоборот?

Ответы [ 20 ]

4 голосов
/ 06 апреля 2016
ScriptManager.RegisterStartupScript(this, this.Page.GetType(),"updatePanel1Script", "javascript:ConfirmExecute()",true/>
2 голосов
/ 13 июля 2018
ScriptManager.RegisterStartupScript(Page, GetType(), "JavaFunction", "AlertError();", true);

достаточно использования вашей функции

2 голосов
/ 12 мая 2017

Я заметил, что многие ответы здесь используют 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);

Конечно, я надеюсь, что само собой разумеется, что вам нужно заменить ключ своим идентификатором ключа и, вероятно, следует переместить все это в sub / function / method и передать key и someJavascriptObject (если ваш метод javascript требует, чтобы ваш arg является объектом javascript).

MSDN документы:

https://msdn.microsoft.com/en-us/library/bb338357(v=vs.110).aspx

2 голосов
/ 02 июня 2012

Вот как я это сделал.

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>

Здесь есть функция JavaScript.

<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>

Код для запуска функции JavaScript находится здесь.

lblJavaScript.Text = "<script type='text/javascript'>showDialogue();</script>";
1 голос
/ 15 сентября 2016

это работает для меня

object Json_Object=maintainerService.Convert_To_JSON(Jobitem);
ScriptManager.RegisterClientScriptBlock(this,GetType(), "Javascript", "SelectedJobsMaintainer("+Json_Object+"); ",true);
0 голосов
/ 29 апреля 2019

Так как я не смог найти решение, которое было за кодом, которое включает в себя попытку ClientScript и ScriptManager как mutanic, и Орландо Эррера сказал в этом вопросе (они оба почему-то не дали результатов), я предложуконечное решение, которое использует нажатия кнопок для других, если они находятся в той же позиции, что и я.Это сработало для меня:

HTML-разметка:

<asp:button ID="myButton" runat="server" Text="Submit" OnClientClick="return myFunction();"></asp:button>

JavaScript:

function myFunction() {
    // Your JavaScript code
    return false;
}

Я просто использую кнопку ASP.NET, которая использует свойство OnClientClick, который запускает функции сценариев на стороне клиента, которые являются JavaScript.Ключевыми моментами, которые следует здесь отметить, является использование ключевого слова return в вызове функции и в самой функции.Я читал документы, которые не используют return, но все же заставляют работать кнопки - почему-то у меня это не получалось.Оператор return false; в функции указывает, что обратной передачи НЕ должно происходить.Вы также можете использовать это утверждение в свойстве OnClientClick: OnClientClick="myFunction() return false;"

0 голосов
/ 03 декабря 2018

Попробуйте это в Code Behind, и оно будет работать на 100%

string script = "window.onload = function() { YourJavaScriptFunctionName(); };";
ClientScript.RegisterStartupScript(this.GetType(), "YourJavaScriptFunctionName", script, true);
0 голосов
/ 21 ноября 2017

Я использовал ScriptManager в Code Behind, и он работал нормально.

ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "CallMyFunction", "confirm()", true);

Если вы используете UpdatePanel в ASP Frontend. Затем введите имя UpdatePanel и «имя функции», определенные с помощью тегов скрипта.

0 голосов
/ 20 апреля 2011

Вы можете предоставить методы C # на страницах codebehind для вызова через JavaScript с помощью атрибута ScriptMethod .

Нельзя вызывать JavaScript из CodeBehind - этот код существует исключительно на клиенте.

0 голосов
/ 20 апреля 2011

Вы не можете вызвать функцию Javascript из CodeBehind, потому что файл CodeBehind содержит код, который выполняется на стороне сервера на веб-сервере.Код Javascript выполняется в веб-браузере на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...