После того, как форма отправляется, она возвращается в исходное состояние (по большей части), и мы хотим иметь кнопку «Reset
», которая позволяет пользователю запустить страницу «afresh
». Я надеялся, что я мог бы определить и настроить HtmlButton
в коде:Как я могу отобразить кнопку сброса в форме ony после отправки формы?
HtmlButton btnStartNewDirPay = null;
. . .
private void CreateAndConfigureButtonStartNewDirectPayment()
{
btnStartNewDirPay = new HtmlButton();
btnStartNewDirPay.Attributes["type"] = "reset";
btnStartNewDirPay.InnerHtml = "Start new Direct Pay";
btnStartNewDirPay.ID = "btnStartNewDirPay";
}
..., а затем создать его экземпляр только на postback
(после того, как form
представил) следующим образом:
if (Page.IsPostBack)
{
if (null == btnStartNewDirPay)
{
CreateAndConfigureButtonStartNewDirectPayment();
}
this.Controls.Add(btnStartNewDirPay); //this causes problems
}
Но последний линия (где кнопка добавляется на страницу (это же) управления), он терпит неудачу с:
System.Web.HttpException был необработанное с помощью кода пользователя Message = Не удалось для загрузки viewstate. Дерево управления, в которое отображается состояние просмотра , должно соответствовать дереву управления, которое использовалось для сохранения viewstate во время предыдущего запроса. Например, при динамическом добавлении элементов управления элементы управления, добавленные во время обратной связи, должны соответствовать типу и позиции элементов управления, добавленных во время первоначального запроса.
Источник = System.Web ErrorCode = -2147467259 StackTrace: в System.Web.UI.Control.LoadViewStateRecursive (Object savedState) на System.Web.UI.Control.AddedControl (контроль управления, индекс Int32) в DirectPaymentSectionsWebPart. DPSVisualWebPart.DPSVisualWebPartUserControl.Page_Load (Объект отправителя, EventArgs е) в System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr Ф.П., объект О, объект т, EventArgs е) в System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Object отправителя, EventArgs e) в System.Web.UI.Control.OnLoad (EventArgs e) в System.Web.UI.Control.LoadRecursive() в System.Web.UI.Control.LoadR ecursive() в System.Web.UI.Control.LoadRecursive() в System.Web.UI.Control.LoadRecursive() в System.Web.UI.Control.LoadRecursive() в System.Web.UI. Control.LoadRecursive() в System.Web.UI.Control.LoadRecursive() в System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException:
Я также попытался создать/настройка HtmlButton в начале (когда IsPostBack был ложным), добавив элемент управления к этому «из» git-go, например:
private void CreateAndConfigureButtonStartNewDirectPayment()
{
btnStartNewDirPay = new HtmlButton();
btnStartNewDirPay.Attributes["type"] = "reset";
btnStartNewDirPay.InnerHtml = "Start new Direct Pay";
btnStartNewDirPay.ID = "btnStartNewDirPay";
this.Controls.Add(btnStartNewDirPay);
}
... а затем скрыть это с помощью JQuery:
$(window).load(function() {
. . .
$('[id$=btnStartNewDirPay]').hide();
});
... но это тоже не на одной линии (»this.Controls.Add (btnStartNewDirPay); «) в„CreateAndConfigureButtonStartNewDirectPayment()“с тем же Сообщение об ошибке, как описано выше, когда IsPostBack верно.
Так что не позволит мне создать экземпляр и скрыть HtmlButton в начале, а затем показать его, когда IsPostBack является true, и это не позволит мне отложить создание экземпляра, когда IsPostBack истинно, кажется. Возможно, у него есть элемент, который отображается после обратной передачи, но не до этого ... но как?
Не должно ли быть «тип =» сброс «» там тоже? –
Ну, моя реализация не будет использовать тип кнопки сброса. Я бы просто использовал jquery/js, чтобы очистить поля, которые вы могли бы легко сделать. Простой '$ ('form'). Find (" input [type = text], textarea "). Val (" ");'. Таким образом, у вас есть немного больше контроля над тем, что вы перезагружаете. – mattfetz
Интересная идея, но мне это нужно, чтобы работать на всей странице, у которой нет форм. Есть ли jQuery «стенография» для «всего» (сама страница не имеет идентификатора, на который можно ссылаться, я не думаю). –