我研究过网络,使用我的学校论坛,尝试重新配置我的所有代码以使其工作,但我仍然最终得到了这个错误。 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)
{
}
}
答案 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.";