Стоп C # код от выполнения каждый раз, когда страница загружается - PullRequest
0 голосов
/ 13 августа 2011

У меня есть открытая строка в моем коде позади файла, которую я намереваюсь вызвать из javascript, когда я буду готов к этому. Однако, поскольку он не привязан к какому-либо конкретному событию, он просто срабатывает при каждой загрузке страницы. Я бы установил его на срабатывание только если (IsPostBack), но используемый мной элемент управления (по многим другим причинам) является кнопкой ввода типа =, так что страница никогда не выполняет обратную передачу, то есть код никогда не сработает.

Как у меня что-то вроде:

public string dontExecuteYet()
 {
  Do some server side stuff
  Then redirect on delay
  return string
  }

в моем коде сзади, чтобы он не работал, пока я не скажу?

Ответы [ 4 ]

0 голосов
/ 13 августа 2011

Я согласен, что вы можете использовать AJAX в этом, но если вам не нужно, чтобы это было асинхронным, просто используйте строку запроса, например так:

if(Request.QueryString["execute"] == "yes")
{
     dontExecuteYet();
}

и в javascript вам просто нужно, чтобы этот код срабатывал при нажатии кнопки:

window.location = "yoursite.com?execute=yes";
0 голосов
/ 13 августа 2011
0 голосов
/ 13 августа 2011

Если вам необходимо получить доступ к коду, в конце концов (при условии, что после начальной Page_Load), вы не можете просто сделать что-то вроде этого:

if (!Page.IsPostBack)
{
    this.MyPublicString = "Hello World!";
}

И в вашем JavaScript:

var publicString = "<%= this.MyPublicString %>";
0 голосов
/ 13 августа 2011

Вы можете сделать это с помощью метода Page и AJAX следующим образом.

http://www.geekzilla.co.uk/View7B75C93E-C8C9-4576-972B-2C3138DFC671.htm

Этот код выполняется только тогда, когда вы вызываете его с помощью JavaScript

....

....

На самом деле вы также можете принудительно сделать обратную передачу на кнопку ввода, добавив onclick = "javascript: __ doPostBack ('eventargument', 'eventvalue');" (если у вас есть этот контроль над ним)

...