【问题标题】:ASP.NET wizard control navigates twice after changing ActiveStepIndex更改 ActiveStepIndex 后 ASP.NET 向导控件导航两次
【发布时间】:2016-02-26 21:46:21
【问题描述】:

我有一个包含一堆向导的应用程序。在其中一个向导中,当用户处于最后一步时,一些代码在代码隐藏中运行以检查表单的值。如果其中一个值存在问题,则会显示是/否弹出窗口(用户控制)。如果用户单击“是”,他们将通过更改代码隐藏中的ActiveStepIndex 进入错误值的步骤。

这在本地和我的构建服务器上工作,步骤发生了变化,导航发生了,一切都很好。但在我的 QA 服务器上,随后会立即触发另一个回发,再次导航到上一步。

通过调试发现AJAX回发是由MicrosoftAjax.js_domReady函数触发的。显然它应该检查浏览器导航事件或类似事件。在我的例子中,在 _navigate 函数中完成的状态比较导致第二次回发发生,因为这两个状态是不同的。新状态与旧状态不同,旧状态由ScriptManager source 设置。

function Sys$_Application$_navigate(entry) {
    this._ensureHistory();
    var state = this._deserializeState(entry);

    if (this._uniqueId) {
        var oldServerEntry = this._state.__s || '';
        var newServerEntry = state.__s || '';
        if (newServerEntry !== oldServerEntry) {
            this._updateHiddenField(newServerEntry);
            __doPostBack(this._uniqueId, newServerEntry);
            this._state = state;
            return;
        }
    }
    this._setState(entry);
    this._state = state;
    this._raiseNavigate();
}

知道为什么服务器状态在一种环境中可能不同,而在另一种环境中则不同吗?顺便说一句,它发生在所有浏览器中。

【问题讨论】:

    标签: c# asp.net webforms viewstate


    【解决方案1】:

    我发现警告弹出窗口位于向导的更新面板之外。在我将它移到更新面板后,视图状态是同步的,并且没有进行额外的回发。

    不过,我仍然不明白为什么它在本地运行良好。

    【讨论】:

      猜你喜欢
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      • 2019-08-08
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多