#javascript #c# #asp.net #.net
#javascript #c# #asp.net #.net
Вопрос:
Эта проблема обсуждается много раз на этом сайте, но нигде я не нашел решения своей проблемы.
Я выполнил следующие шаги.
1. Создал JS-функцию.
function showModal() {
alert("called");
}
2. Добавлен менеджер сценариев в aspx-файл
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
3. Создал метод в файле .cs
[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
protected void register_user(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "showModal", "javascript:showModal(); ", true);
log.Debug("register_user is called");
}
Но это не вызов функции JS.
Комментарии:
1. @Div. Это была просто опечатка.
Ответ №1:
Может быть, это связано с тем, что вы не закрыли свою функцию javascript:
function showModal() {
alert("called");
}
Или вы также можете попробовать это:
Замените эту строку:
Page.ClientScript.RegisterStartupScript(this.GetType(), "showModal", "javascript:showModal(); ", true);
с
Page.ClientScript.RegisterStartupScript(this.GetType(), "Message", "showModal(); ", true); // correct
Комментарии:
1. Я изменил в соответствии с вашим предложением. все еще не работает.
Ответ №2:
Прежде всего, я не думаю, что вызов Js-функции из aspx.cs — хорошая идея.
В любом случае, из вашего фрагмента просто измените на это:
Page.ClientScript.RegisterStartupScript(this.GetType(), "showModal", "showModal()", true);
Обратите внимание на 3-й параметр: "showModal()"
А также, ваша JS-функция «ShowModal ()», работает ли она при нажатии на эту кнопку? <input type="button" value="Submit" onclick="showModal();"/>
Ответ №3:
Что сработало для меня, так это:
Вместо того , чтобы —
Page.ClientScript.RegisterStartupScript(this.GetType(), "showModal", "javascript:showModal(); ", true);
Я добавил —
ScriptManager.RegisterStartupScript(this,GetType(), "Message", "showModal();", true);
и это сработало.
Ответ №4:
Вы смешиваете так много вещей.
Если вы хотите добавить javascript из исходного кода в свой html. Это должно быть расположено в каком-то глобальном событии Page_Load
или PreRender
.
Page.ClientScript.RegisterStartupScript(this.GetType(), "showModal", "YourJavascriptCode", true);
Если вы хотите вызвать метод в aspx из вызова AJAX, который должен возвращать ответ
[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public static string register_user(object sender, EventArgs e)
{
//you can return a class->Json
return stuff;
}
Если вы хотите выполнить javascript на клиенте, нажмите вашу кнопку. Я полагаю, вы этого хотите!
YourButton.Attributes["onclick"]= "javaScriptFunction()";
//if you want to not execute server side
YourButton.Attributes["onclick"]= "javaScriptFunction(); return false";
Вот самый простой способ добавления функции javascript к вашей кнопке asp.
<asp:Button ID="RegisterBtn" runat="server" Text="Register" OnClientClick="showModal()" onclick="register_user"/>
Комментарии:
1. привет. Это всего лишь демонстрационная функция JS. Мне нужно добавить больше строк кода после успешного запуска.
2. @DKR вы можете добавить сотни строк кода, если вы не понимаете эти 3 вещи, что они делают, вы не можете добавить даже 1 строку
3. согласно вашей модификации в ответе, что, если я хочу вызвать функцию JS при нажатии кнопки, а не при загрузке страницы?
4. @DKR вы ничего не вызываете с помощью RegisterStartupScript, вы добавляете скрипт в html. Вызов выполняется, когда СНАЧАЛА присоедините ваш метод javascript к атрибуту кнопки onclick и после этого вы нажмете кнопку. Также сначала выполняется клиентская сторона, а затем серверная.
Ответ №5:
Добавить пространство имен
использование System.Web.UI;
Замените эту строку:
Страница.Клиентский скрипт.RegisterStartupScript(это.GetType(), «ShowModal», «javascript:ShowModal(); «, true);
с
ScriptManager.RegisterStartupScript(это, это.GetType(), «Сообщение», «ShowModal();», true);
он работает нормально