Добавить серверный контроль в мой пользовательский веб-контроль, который запускает функцию javascript и функцию на стороне сервера - PullRequest
0 голосов
/ 08 февраля 2011

В ASP.Net я пытаюсь создать WebControl.В этом элементе управления у меня есть метод RenderControl, переопределенный с помощью моих элементов управления html.

protected override void RenderContents(HtmlTextWriter output)
{
    output.Write(@"<table><tr><td>");
    output.Write(@"<input type=""submit"" name=""btnExecute"" value=""Execute""  id=""btnExecute"" />");
    output.Write(@"</td></tr></table>");
}

Как заставить кнопку вызывать событие click, чтобы можно было вызывать метод на стороне сервера btnExecute_Click ()?Кроме того, эта кнопка вызывает функцию javascript даже на стороне сервера.

Подскажите пожалуйста, как заставить это работать.

1 Ответ

0 голосов
/ 08 февраля 2011

Посмотрите этот пример о том, как реализовать CompositeControl (который является производным от WebControl).

http://msdn.microsoft.com/en-us/library/3257x3ea.aspx#Y114

Ваша кнопка будет существовать как личный член вашего Композита. Вы инициализируете его и подключите к серверному методу в CreateChildControls. Затем вы вызовете метод RenderControl вашей кнопки при переопределении метода Render вашего CompositeControl. Делая это таким образом, вы заставите кнопку испустить javascript, который связывает событие click с обратной передачей asp.net.

Что касается JS, который запускается до обратного вызова ... ну, это может быть немного сложно. Мое предложение состояло бы в том, чтобы просто присвоить Button уникальный CSS-класс и связать ваш метод с jQuery. Тем не менее, я не уверен, как вы задержите обратную передачу ASP.Net до тех пор, пока ваш клиентский метод не будет выполнен ... Для меня это похоже на убитие паттернов, кажется, что вы либо захотите сделать все это на стороне сервера (традиционный Asp.Net контролирует с обратной передачей) или делает все это на стороне клиента (jquery с ajax).

...