C#组合变量

时间:2013-11-16 02:48:08

标签: c# asp.net

我在C#课程中并且整天都在试图解决这个问题,我尝试了很多不同的方法。

我们正在处理会话状态我有5个字段需要记录到会话状态,验证以确保它们不是空的,如果它们将字段更改为黄色然后显示消息到标签说明了什么字段或者留空的字段,它们不能为空。

除了消息部分,我才能使用它。 我尝试在所有5个if语句中使用相同的变量errMsg尝试使用+符号将它们串在一起,但这不起作用。 现在我已经为5个if语句中的每一个定义了一个变量,然后在底部组合它们以显示每个字段留空的消息,现在我只是得到错误:

  

使用未分配的局部变量

这是我一直在处理的代码,我知道它是基本的但不确定如果字段为空,如何将这些单独的消息显示到标签。

感谢。

protected void btnSubmit_Click(object sender, EventArgs e)
{
    //Assigning our form data so session state values
    Session["txtFirstName"] = txtFirstName.Text;
    Session["txtLastName"] = txtLastName.Text;
    Session["txtPayRate"] = txtPayRate.Text;
    Session["txtStartDate"] = txtStartDate.Text;
    Session["txtEndDate"] = txtEndDate.Text;

    string errFN;
    string errLN;
    string errPD;
    string errSD;
    string errED;

    //Validation of each session state making sure they are not empty 
    //(probably a better way to do this but what I came up with)
    if(string.IsNullOrEmpty(txtFirstName.Text))
    {
        txtFirstName.BackColor = System.Drawing.Color.Yellow;
        errFN = Convert.ToString("First Name may not be empty.");
    }
    if(string.IsNullOrEmpty(txtLastName.Text))
    {
        txtLastName.BackColor = System.Drawing.Color.Yellow;
        errLN = Convert.ToString("Last Name may not be empty.");
    }
    if(string.IsNullOrEmpty(txtPayRate.Text))
    {
        txtPayRate.BackColor = System.Drawing.Color.Yellow;
        errPD = Convert.ToString("Pay Rate may not be empty.");
    }
    if(string.IsNullOrEmpty(txtStartDate.Text))
    {
        txtStartDate.BackColor = System.Drawing.Color.Yellow;
        errSD = Convert.ToString("Start Date may not be empty.");
    }
    if(string.IsNullOrEmpty(txtEndDate.Text))
    {
        txtEndDate.BackColor = System.Drawing.Color.Yellow;
        errED = Convert.ToString("End Date may not be empty.");
    }

    if (string.IsNullOrEmpty(txtFirstName.Text) ||     string.IsNullOrEmpty(txtLastName.Text) || string.IsNullOrEmpty(txtPayRate.Text) ||
        string.IsNullOrEmpty(txtStartDate.Text) || string.IsNullOrEmpty(txtEndDate.Text))
    {
        lblError.Text = errFN + errLN + errPD + errSD + errED;
    }
    else
    {
        Response.Redirect("~/frmPersonalVerified.aspx");
    }
}

2 个答案:

答案 0 :(得分:0)

Use of unassigned local variable是因为这里

lblError.Text = errFN + errLN + errPD + errSD + errED;

如果没有错误,你使用无符号变量。

你应该像这样初始化你的变量

string errFN = System.String.Empty;
string errLN = System.String.Empty;
string errPD = System.String.Empty;

string errSD = "";
string errED = "";

因此,如果没有错误,变量将被初始化并为空

答案 1 :(得分:0)

1.在比较Trim支票之前,您需要Empty这些值。

有时空格(在TextBox上不可见)与Empty字符串不匹配

2.您需要始终assign local个变量。

试用此代码:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    //Assigning our form data so session state values
    Session["txtFirstName"] = txtFirstName.Text;
    Session["txtLastName"] = txtLastName.Text;
    Session["txtPayRate"] = txtPayRate.Text;
    Session["txtStartDate"] = txtStartDate.Text;
    Session["txtEndDate"] = txtEndDate.Text;

    string errFN="";
    string errLN="";
    string errPD="";
    string errSD="";
    string errED="";

    //Validation of each session state making sure they are not empty 
    //(probably a better way to do this but what I came up with)
    if(txtFirstName.Text.ToString().Trim().Equals(""))
    {
        txtFirstName.BackColor = System.Drawing.Color.Yellow;
        errFN = Convert.ToString("First Name may not be empty.");
    }
    if(txtLastName.Text.ToString().Trim().Equals(""))
    {
        txtLastName.BackColor = System.Drawing.Color.Yellow;
        errLN = Convert.ToString("Last Name may not be empty.");
    }
    if(txtPayRate.Text.ToString().Trim().Equals(""))
    {
        txtPayRate.BackColor = System.Drawing.Color.Yellow;
        errPD = Convert.ToString("Pay Rate may not be empty.");
    }
    if(txtStartDate.Text.ToString().Trim().Equals(""))
    {
        txtStartDate.BackColor = System.Drawing.Color.Yellow;
        errSD = Convert.ToString("Start Date may not be empty.");
    }
    if(txtEndDate.Text.ToString().Trim().Equals(""))
    {
        txtEndDate.BackColor = System.Drawing.Color.Yellow;
        errED = Convert.ToString("End Date may not be empty.");
    }

    if (txtFirstName.Text.ToString().Trim().Equals("") ||     txtLastName.Text.ToString().Trim().Equals("") || txtPayRate.Text.ToString().Trim().Equals("") ||
        txtStartDate.Text.ToString().Trim().Equals("") || txtEndDate.Text.ToString().Trim().Equals(""))
    {
        lblError.Text = errFN + errLN + errPD + errSD + errED;
    }
    else
    {
        Response.Redirect("~/frmPersonalVerified.aspx");
    }
}