【问题标题】:How to display my text label before response.redirect(request.rawurl)如何在 response.redirect(request.rawurl) 之前显示我的文本标签
【发布时间】:2014-03-16 05:44:26
【问题描述】:

我正在尝试在之前显示我的 status_lbl 文本标签

Response.Redirect(Request.RawUrl);

我尝试在重定向页面功能之前设置延迟时间,但它仍然没有显示 status_lbl 文本标签。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Services;
using System.Web.Script;
using System.Web.Security;

namespace TagNumberWeb
{
public partial class Main : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string CrUserID = Request.QueryString["LogInUser"].ToString();
        string Result = Request.QueryString["Result"].ToString();

        if (!IsPostBack)
        {
            if (string.IsNullOrWhiteSpace(CrUserID) || string.IsNullOrWhiteSpace(Result))
            {
                Response.Redirect("Login Page.aspx");
            }

            else
            {                    
                UserID.Text = Request.QueryString["LogInUser"].ToString();
                status_lbl.Visible = false;
                GridView1.Visible = false;
            }
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string sONbr = sONbrTextBox.Text;
        string SOLine = sOLineTextBox.Text;
        string SerialNbr = serialNbrTextBox.Text;
        string StatusCode = statusCodeComboBox.Text;
        string CrUserID = Request.QueryString["LogInUser"].ToString();

        if (string.IsNullOrWhiteSpace(sONbr) || string.IsNullOrWhiteSpace(SOLine) || string.IsNullOrWhiteSpace(StatusCode) || string.IsNullOrEmpty(SerialNbr))
        {
            status_lbl.Text = "Please fill in all the information.";
            status_lbl.Visible = true;
            GridView1.Visible = false;
            return;
        }

        else if (string.IsNullOrWhiteSpace(CrUserID))
        {
            status_lbl.Text = "Please login your account!";
            status_lbl.Visible = true;
            ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Please login your account!')</script>");
            Response.Redirect("Login Page.aspx");
            GridView1.Visible = false;
            return;
        }

        else if (CheckBox1.Checked == true)
        {

            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["constr_BCSystem"].ToString());
            conn.Open();

            SqlCommand comm = conn.CreateCommand();
            comm.CommandType = CommandType.StoredProcedure;
            comm.CommandText = "usp_TagNumberUpdate";

            comm.Parameters.AddWithValue("@sONbr", sONbr);
            comm.Parameters.AddWithValue("@SOLine", SOLine);
            comm.Parameters.AddWithValue("@SerialNbr", SerialNbr);
            comm.Parameters.AddWithValue("@StatusCode", StatusCode);
            comm.Parameters.AddWithValue("@CrUserID", CrUserID);

            SqlParameter ReturnVal = comm.Parameters.Add("@return", SqlDbType.NVarChar, 200);
            ReturnVal.Direction = ParameterDirection.Output;

            comm.ExecuteNonQuery();

            string val = (string)ReturnVal.Value;

            conn.Close();
            status_lbl.Text = val;
            status_lbl.Visible = true;
            Response.Redirect(Request.RawUrl);

        }

        else 
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["constr_BCSystem"].ToString());
            conn.Open();

            SqlCommand comm = conn.CreateCommand();
            comm.CommandType = CommandType.StoredProcedure;
            comm.CommandText = "usp_TagNumberUpdateNoSN";

            comm.Parameters.AddWithValue("@sONbr", sONbr);
            comm.Parameters.AddWithValue("@SOLine", SOLine);
            comm.Parameters.AddWithValue("@StatusCode", StatusCode);
            comm.Parameters.AddWithValue("@CrUserID", CrUserID);

            SqlParameter ReturnVal = comm.Parameters.Add("@return", SqlDbType.NVarChar, 200);
            ReturnVal.Direction = ParameterDirection.Output;

            comm.ExecuteNonQuery();

            string val = (string)ReturnVal.Value;

            conn.Close();
            status_lbl.Text = val;
            status_lbl.Visible = true;
            Response.Redirect(Request.RawUrl);
        }
    }

【问题讨论】:

    标签: c# asp.net visual-studio-2012


    【解决方案1】:

    这是因为,当您重定向到同一页面时,上下文会丢失。

    Page_Load  
    

    事件再次被执行。

    你应该像下面这样改变你的代码。

    将您的 Button1_Click 更改为:

    protected void Button1_Click(object sender, EventArgs e)
        {
            string sONbr = sONbrTextBox.Text;
            string SOLine = sOLineTextBox.Text;
            string SerialNbr = serialNbrTextBox.Text;
            string StatusCode = statusCodeComboBox.Text;
            string CrUserID = Request.QueryString["LogInUser"].ToString();
    
            if (string.IsNullOrWhiteSpace(sONbr) || string.IsNullOrWhiteSpace(SOLine) || string.IsNullOrWhiteSpace(StatusCode) || string.IsNullOrEmpty(SerialNbr))
            {
                status_lbl.Text = "Please fill in all the information.";
                status_lbl.Visible = true;
                GridView1.Visible = false;
                return;
            }
    
            else if (string.IsNullOrWhiteSpace(CrUserID))
            {
                status_lbl.Text = "Please login your account!";
                status_lbl.Visible = true;
                ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Please login your account!')</script>");
                Response.Redirect("Login Page.aspx");
                GridView1.Visible = false;
                return;
            }
    
            else if (CheckBox1.Checked == true)
            {
    
                SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["constr_BCSystem"].ToString());
                conn.Open();
    
                SqlCommand comm = conn.CreateCommand();
                comm.CommandType = CommandType.StoredProcedure;
                comm.CommandText = "usp_TagNumberUpdate";
    
                comm.Parameters.AddWithValue("@sONbr", sONbr);
                comm.Parameters.AddWithValue("@SOLine", SOLine);
                comm.Parameters.AddWithValue("@SerialNbr", SerialNbr);
                comm.Parameters.AddWithValue("@StatusCode", StatusCode);
                comm.Parameters.AddWithValue("@CrUserID", CrUserID);
    
                SqlParameter ReturnVal = comm.Parameters.Add("@return", SqlDbType.NVarChar, 200);
                ReturnVal.Direction = ParameterDirection.Output;
    
                comm.ExecuteNonQuery();
    
                string val = (string)ReturnVal.Value;
    
                conn.Close();
                Response.Redirect(Request.RawUrl+"?status="+val);
    
            }
    
            else 
            {
                SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["constr_BCSystem"].ToString());
                conn.Open();
    
                SqlCommand comm = conn.CreateCommand();
                comm.CommandType = CommandType.StoredProcedure;
                comm.CommandText = "usp_TagNumberUpdateNoSN";
    
                comm.Parameters.AddWithValue("@sONbr", sONbr);
                comm.Parameters.AddWithValue("@SOLine", SOLine);
                comm.Parameters.AddWithValue("@StatusCode", StatusCode);
                comm.Parameters.AddWithValue("@CrUserID", CrUserID);
    
                SqlParameter ReturnVal = comm.Parameters.Add("@return", SqlDbType.NVarChar, 200);
                ReturnVal.Direction = ParameterDirection.Output;
    
                comm.ExecuteNonQuery();
    
                string val = (string)ReturnVal.Value;
    
                conn.Close();
                Response.Redirect(Request.RawUrl+"?status="+val);
            }
        }
    

    你的Page_Load 应该是:

    protected void Page_Load(object sender, EventArgs e)
        {
            string CrUserID = Request.QueryString["LogInUser"].ToString();
            string Result = Request.QueryString["Result"].ToString();
            if(Request.RawUrl.Contains("?status"))
            {
               string val=Request["status"];
               status_lbl.Text = val;   
               status_lbl.Visible = true;
            }
            if (!IsPostBack)
            {
                if (string.IsNullOrWhiteSpace(CrUserID) || string.IsNullOrWhiteSpace(Result))
                {
                    Response.Redirect("Login Page.aspx");
                }
    
                else
                {                    
                    UserID.Text = Request.QueryString["LogInUser"].ToString();
                    status_lbl.Visible = false;
                    GridView1.Visible = false;
                }
            }
        }
    

    【讨论】:

    • 我在提交数据后使用Response.Redirect(Request.RawUrl) 清除我的textbox 字段,所以我需要在重定向页面出现之前显示我的 status_lbl 文本标签。
    • 用你的代码替换,但仍然没有文本标签显示。
    • 是的,把我的代码换成你的干净,但提交数据后仍然没有文本标签显示。
    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多