Подтвердить что ты не робот

Что делает webform_DoPostBackWithOptions()?

У меня есть кнопка, объявленная так:

<asp:Button id=Send runat="server" EnableViewState="False" 
ToolTip="Email me this report" CssClass="Button" Text="Email me this report">
</asp:Button>

Но если я проверю элемент в браузере, он будет выглядеть так:

<input type="submit" class="Button" title="Email me this report" 
id="ctl03_Toolbar_Send" onclick="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions("ctl03$Toolbar$Send","", true, "", "";, false, false))" 
value="Email me this report" name="ctl03$Toolbar$Send">

Интересно, откуда происходит событие onclick? Что оно делает?

Заранее благодарны за Вашу помощь.

4b9b3361

Ответ 1

Если вы устанавливаете свойство PostBackUrl для элемента управления Button Button, это означает, что это перекрестная публикация, а затем структура asp.net вместо обычного __DoPostBack() добавляет "WebForm_DoPostBackWithOptions". Проверьте, есть ли у вас свойство "PostBackUrl" для этой кнопки.

<asp:Button id=Send runat="server" EnableViewState="False" PostBackUrl="~/Page2.aspx"
ToolTip="Email me this report" CssClass="Button" Text="Email me this report">
</asp:Button>

Если в вашем случае вы не установили "PostBackUrl", тогда структура ASP.NET также не добавляет это по умолчанию для Button Control, поэтому это означает, что должен быть другой элемент управления, значение атрибута OnClick, вероятно, с использованием следующего ранга боковой код -

    PostBackOptions myPostBackOptions = new PostBackOptions(this);
    myPostBackOptions.ActionUrl = "Page2.aspx";
    myPostBackOptions.AutoPostBack = false;
    myPostBackOptions.RequiresJavaScriptProtocol = true;
    myPostBackOptions.PerformValidation = true;

    // Add the client-side script to the HyperLink1 control.
    Button1.OnClientClick = Page.ClientScript.GetPostBackEventReference(myPostBackOptions);

Ответ 2

Поймите, что в визуализированном HTML не существует такой вещи, как "ASP.NET Controls", который веб-сервер выводит в ответ на запрос пользователя. Все элементы управления ASP.NET представляют собой некоторый HTML-код, который заставляет все работать так, как ожидалось на сервере. Элемент управления Button испускает атрибут "onclick", чтобы вызвать некоторый JavaScript, который приведет к тому, что данные формы будут отправлены обратно на сервер (если любые валидаторы на стороне клиента не предотвращают его).

Причиной использования этого метода для отправки данных является, как я уже упоминал, дать любой клиентской стороне script возможность запускать сначала, например, элементы проверки достоверности данных, которые могут проверять и видеть, необходимы ли какие-либо обязательные поля не заполняются.

В принципе, если вы не хотите создавать свои собственные серверные элементы управления ASP.NET, вам не нужно слишком беспокоиться о том, что именно появляется в качестве окончательного ответа от IIS. Хорошо быть знакомым с тем, что происходит (и я, конечно же, не говорю, что вам не следует точно знать, как серверные элементы управления выполняют свою задачу), но вам не нужно быть близко знакомым с каждым клиентским вызовом и параметром, который ASP.NET делает для начала работы.

Ответ 3

Удалите "EnableViewState =" False ", и он должен использовать PostBack по умолчанию.

Когда вы устанавливаете кнопку, чтобы не сохранять состояние, она будет использовать этот параметр вместо этого, который будет подключен к событию javascript page_load по-разному на странице.

Ответ 4

Также, если на странице есть какой-то элемент проверки, это также может быть причиной. Установите для свойства CausesValidation кнопки значение false.

     <asp:button runat="server" ID="test" CausesValidation ="false" />