【问题标题】:Postback causes whitescreen when posting data to url containing parameters将数据发布到包含参数的 url 时回发导致白屏
【发布时间】:2012-08-18 00:16:18
【问题描述】:

我在 .net 回发系统中遇到了意外行为和/或错误。

我有一个页面,它使用母版页来提供通用元素,表单输入在子页和母版页之间分开。表单提交按钮位于母版页上,我正在尝试在母版页上处理回发。

每当我尝试提交表单包含任何非空值并且 url 包含参数的数据时,页面都无法正确处理。如果页面本身在任一条件下提交,则不会发生这种情况。

表单回发方式为post。

页面加载失败,在 Firefox 中返回 no element found 错误。

我已经检查了正确的类名等,并且我在非表单元素中确实有空属性,但是当页面一开始正确加载时,我认为这不相关。我还检查了无限循环代码。

这是当前的回发处理代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        save_page();
    }

    page_render();
}

//save
private void save_page()
{
    dev_text.Text = "save in progress";
}

【问题讨论】:

  • page_render 在做什么?我的猜测是,在保存发生时,您正试图在请求开始时将“正在保存”发送回浏览器。如果是这种情况,那么与其尝试从服务器端设置文本,不如考虑在提交时使用客户端脚本进行设置
  • @freefaller page_render 只是运行和显示一个 sql 查询。另外,save_page 函数也没有被转换,就我而言。此外,我刚刚尝试注释掉没有帮助的保存正在进行的行。
  • 我正在根据您是否尝试向用户显示“正在进行中的保存”来编写答案...您正在尝试这样做吗?
  • 好的,在这种情况下,我的回答可能对您没有那么有用。看看是不是...否则我不确定你的问题中是否有足够的信息来回答你

标签: c# asp.net .net postback fatal-error


【解决方案1】:

在服务器上的 HTML 元素中设置文本只有在 HTML 发送到浏览器时才会在浏览器上显示。通常,这会在页面的整个处理完成后发生……所以通常在用户启动回发之后很长一段时间。

与其在服务器上设置文本,不如考虑在提交时直接在浏览器上设置文本。比如……

function setSavingText(){
   // Vanilla javascript...
   document.getElementById("<%=dev_text.ClientId%>").innerHTML = "save in progress";
   // JQuery...
   $("#<%=dev_text.ClientId%>").text("save in progress");
}

<asp:Button runat="server" ... OnClientClick="setSavingText();" />

上面的函数包含一个用于普通(普通)javascript 的行和一个用于jQuery library 的行。您只需要其中一个

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 1970-01-01
    • 2015-08-25
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 2012-06-10
    相关资源
    最近更新 更多