【问题标题】:How to persist a value in asp.net label after response.redirect to same URL在response.redirect到相同的URL之后如何在asp.net标签中保留一个值
【发布时间】:2018-11-13 19:17:56
【问题描述】:

我有一个应用程序,通过将querystring 中的凭据传递给我的应用程序,另一个应用程序使用该应用程序。我将使用querystring 并进行 LDAP 身份验证。如果失败,我将转到我的应用程序登录页面从 URL 清除查询字符串(Response.Redirect(Request.RawUrl.Replace(Request.Url.Query, ""), false);)后输入凭据。但在这里我必须向用户显示一条消息,如无效的 NT 凭据。我将消息分配给 Session 变量,然后分配给 asp.net 标签,但它不是工作即没有警告消息来。 这是我做的代码

if (AutheticateLDAP("LDAP://dc01-opsoft.corp.ae", txtUserName.Value, txtPassword.Value))
        {

        }
        else
        {
            Session["val"] = "Invalid credentials,Use NT  UserId and Password";
            if (!string.IsNullOrEmpty(Request.Url.Query))
            {
                txtUserName.Attributes.Remove("readonly");
                txtPassword.Attributes.Remove("readonly");
                Response.Redirect(Request.RawUrl.Replace(Request.Url.Query, ""), false);
            }
            lblMsg.Text = Session["val"].ToString();
            return;
        }

在这里,当我调试时,我可以看到值已正确分配给lblMsg.Text,但最终它在 UI 中消失了

【问题讨论】:

  • 不使用完整的回发,而是使用 updatepanel 进行部分回发,这样只会更新标签,而不是重新加载完整的页面。
  • 标签已经存在于更新面板中
  • 你能用更新面板和标签显示一些前端代码吗

标签: c# asp.net .net


【解决方案1】:

据我了解,您必须保持在同一页面上并显示错误消息。

下面的问题是你做了一个响应重定向。之后发生的事情是您执行重定向,从而导致完整的页面重新加载。

if (!string.IsNullOrEmpty(Request.Url.Query))
{
   Response.Redirect(Request.RawUrl.Replace(Request.Url.Query, ""), false);
}

在触发页面重新加载时,之前在响应中分配lblMsg.text 已经丢失。这意味着在新页面加载中您必须再次分配标签的值。除非您再次调用完全相同的方法以达到设置 lblMsg.Text 以使其工作的地步。

您看到设置了 lblMsg.text 的原因是因为执行了Response.Redirect(Request.RawUrl.Replace(Request.Url.Query, ""), false);。 false 表示不结束响应,因此它完成执行方法中的代码,然后执行重定向。

更简洁的方法是不使用 response.redirect,而只显示带有错误的标签。如果您担心查询字符串并想清理它,请继续进行重定向并使用此示例how to show a message after redirect。您可以设置 'lblMsg.text`

而不是 javascript 警报

【讨论】:

    猜你喜欢
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多