Asp.Net验证错误

时间:2013-11-19 13:01:57

标签: c# asp.net

我研究过网络,使用我的学校论坛,尝试重新配置我的所有代码以使其工作,但我仍然最终得到了这个错误。 Web表单用于验证字段的输入,如果未填写所有字段则抛出错误。之后,假设将输出提交到另一页。我收到以下错误:

错误1无法在此范围内声明名为“errorMessage”的局部变量,因为它会为“errorMessage”赋予不同的含义,“errorMessage”已在“父级或当前”范围内用于表示其他内容

错误2只能将赋值,调用,递增,递减和新对象表达式用作语句

非常感谢所有帮助。这是学校的家庭作业,我似乎无法得到教授或学生的直接答复。这是我的最后一招。

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
    //1. declare Variables
    string errorMessage = "";
    bool OK = true;
    //2.If statements for input validations & coloring text box
    //This is an example

    if
    (Request["txtFirstName"].ToString().Trim() == "")
    {
    txtFirstName.BackColor = System.Drawing.Color.Yellow;
    string errorMessage;
    errorMessage + "First Name may not be empty.";
    OK = false;
    }
    else
    {

    txtFirstName.BackColor = System.Drawing.Color.White;
    }
    if (OK)
    //3. Date validations
    //Add date validations here

    //4. Then the Session codes to transfer data all the way to the end of submit button codes.
    //example

    if (OK)
    {
    Session["txtFirstName"] = txtFirstName.Text;
    Session["txtLastName"] = txtLastName.Text;
    Session["txtPayRate"] = txtPayRate.Text;
    Session["txtStartDate"] = txtStartDate.Text;
    Session["txtEndDate"] = txtEndDate.Text;
    Response.Redirect("frmPersonnelVerified.aspx");
    }
    else
    {
    lblError.Text = errorMessage;
    }
}
    protected void txtStartDate_TextChanged(object sender, EventArgs e)
    {

    }
}

3 个答案:

答案 0 :(得分:2)

你的问题是这些问题:

if(Request["txtFirstName"].ToString().Trim() == "")
{
    txtFirstName.BackColor = System.Drawing.Color.Yellow;
    string errorMessage;
    errorMessage + "First Name may not be empty.";
    OK = false;
}

摆脱string errorMessage;的重新声明,只需使用上面定义的那个。

换句话说,请改用此代码:

if(Request["txtFirstName"].ToString().Trim() == "")
{
    txtFirstName.BackColor = System.Drawing.Color.Yellow;
    errorMessage += "First Name may not be empty.";
    OK = false;
}

注意:您似乎要附加"First Name may not be empty.",这意味着您需要使用+=语法进行追加;如果您只想分配值,那么只需使用=语法。

答案 1 :(得分:1)

错误并不清楚。第一个是告诉您,您正在尝试重新声明名为errorMessage的变量。您通过{type} {variablename}声明变量,因此您会在第二个string errorMessage看到您重新声明该变量。

第二个错误是您将表达式用作语句。它抱怨它无法对errorMessage + "First Name may not be empty.";做任何事情。表达式不存储结果。

所以,改变:

string errorMessage;
errorMessage + "First Name may not be empty.";

要:

errorMessage += "First Name may not be empty.";

答案 2 :(得分:1)

您在这里使用相同的变量名两次:

string errorMessage = "";
// ...

if(Request["txtFirstName"].ToString().Trim() == "")
{
    txtFirstName.BackColor = System.Drawing.Color.Yellow;
    string errorMessage; 
    // ...

一个范围是大括号之间if语句中的一部分,另一个范围是方法的主体。由于if是方法,因此在同一范围内有两个具有相同名称的变量。

您只需重命名一个。

下一个错误:“只有分配,调用,递增,递减......”

errorMessage + "First Name may not be empty.";

因为您必须将结果字符串分配给变量,所以可以使用+=

errorMessage += "First Name may not be empty.";

相同
errorMessage = errorMessage + "First Name may not be empty.";