Я предполагаю, что вы просто не хотите вызывать событие click, но, возможно, передаете некоторые данные от клиента на сервер через AJAX. Самый простой способ сделать это, без ScriptManager
, UpdatePantel
и все такое. Я создал одну кнопку и на сервере не имеет обработчика событий кликов. Но он имеет один на стороне клиента.
protected void Page_Load(object sender, EventArgs e)
{
Button ButtonPull = new Button();
ButtonPull.Text = "Pull";
ButtonPull.ID = "Button1";
ButtonPull.ControlStyle.CssClass = "btn btn-default";
this.Form.Controls.Add(ButtonPull);
// You can pass anything you want to the server. Here I am passing 1111
// You can pass things from the client side as well. Whole JSON objects as well
ButtonPull.OnClientClick = "callServer(1111);return false;"; // return false so button does not postback
}
Я также добавил этот метод к коду моей страницы. Это веб-метод, который получает идентификатор как int
и присоединяет его к строке и возвращает эту строку клиенту.
[WebMethod]
[ScriptMethod(UseHttpGet = true,
ResponseFormat = ResponseFormat.Json, XmlSerializeString = false)]
public static string GetStuffFromServer(int id)
{
return "Works like a charm! And id is " + id ;
}
И, наконец, добавил это на мой взгляд. Когда кнопка нажата на стороне клиента, она вызовет эту функцию и передаст 1111, как мы ее инструктировали, когда мы создали кнопку. Внутри этой функции мы используем jQuery ajax call для вызова метода сервера GetSuffFromServer
. Если все будет хорошо, сервер вернется, и мы пойдем на успех здесь и предупредим данные, возвращенные с сервера. Опять же, сервер может вернуть все необходимое. И этот метод может отправлять все, что необходимо для сервера.
<script>
function callServer(id) {
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
url: "default.aspx/GetStuffFromServer?id=" + id,
success: function (data)
{
alert(data.d);
},
error: function (data) { alert(data);}
});
}
</script>
Одна последняя вещь в изменении RouteConfig.cs файла App_Start папки эта строка:
settings.AutoRedirectMode = RedirectMode.Permanent;
к этому:
settings.AutoRedirectMode = RedirectMode.Off;
Это изменение происходит потому, что я использую дружественный URL при вызове веб-метод: default.aspx/GetStuffFromServer? id =
Вы видите динамические кнопки в браузере в своем форме? – CodingYoshi
Да, я их вижу. –
Извините, что догнал несколько вещей. Я отправил ответ. – CodingYoshi