#javascript #asp.net
#javascript #asp.net
Вопрос:
Возможно ли вызвать asp.net функция поиска кода из javascript в vs2008?
Моя проблема в том, что у меня есть два метода codebehind, один для некоторой проверки, и он вернет true или false. Этот метод будет вызван, когда пользователь нажмет кнопку отправки, и если возвращаемое значение равно true, я хочу вызвать функцию javascript для подтверждения (диалоговое окно подтверждения), и если все в порядке,
я вызову другой метод codebehind для обновления. Если метод проверки возвращает false или javascript cancel, ничего не меняется. Теперь мой код выглядит следующим образом:
<script language="javascript" type="text/javascript">
function Confirm()
{
var checkUpdate = confirm("Do you wish to save changes?");
if (checkUpdate)
{
return true;
}
else
{
return false;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if(CheckValidate())
{
string script = "<SCRIPT LANGUAGE='JavaScript'> ";
script = "Confirm()";
script = "</SCRIPT>";
Page.RegisterStartupScript("ClientScript", script);
//If Javascript Ok Call Update,Otherewise,nothing;
}
}
private boolean CheckValidate()
{
return boolean;
}
private void UpdateData()
{
//Update;
}
Тем не менее, он сразу переходит к методу обновления, а после обновления — к окну подтверждения javascript
выходит.
Как я изменяю, чтобы получить правильную последовательность? пожалуйста, подскажите мне правильный способ.
Ответ №1:
Да, используя PageMethods, вы можете вызывать методы codebehind из javascript.
Проверьте эту ссылку для получения более подробной информации о pagemethods :http://aspalliance.com/1922_PageMethods_In_ASPNET_AJAX
Комментарии:
1. если это возможно, я только хочу использовать asp.net и javascript, а не ajax. Спасибо.
Ответ №2:
Чтобы вызвать серверный метод в событии на стороне клиента, вам нужно выполнить следующее:
1- Создайте метод на стороне сервера:
void DoSomething(...) { ... }
2- Реализовать System.Web.UI.IPostBackEventHandler.RaisePostBackEvent
, которые принимают один строковый аргумент (вы можете присвоить имя значению этого аргумента).:
public void RaisePostBackEvent(string eventArgument)
{
DoSomething(...);
}
3- Напишите скрипт для запуска обратной отправки:
function TriggerPostBack(control, arg){
__doPostBack(control, arg);
}
4- При необходимости вызвать функцию запуска обратной передачи:
<a .... onclick="TriggerPostBack('control', 'arg')" .. />
Ответ №3:
В вашем случае, почему бы вам не использовать функцию OnClientClick кнопки для вызова вашей функции javascript?
С уважением, С. Мукерджи.
Комментарии:
1. если я использую onclientclick, сначала будет вызвана функция javascript, а затем проверка и обновление. моя последовательность — это (i) Проверка (извлечение кода) (ii) Подтверждение(javascript) (iii) Обновление (извлечение кода). Спасибо.