如何更正我的null异常?

时间:2011-02-06 23:09:27

标签: c# asp.net webforms

我使用c#和Web服务创建了一个联系表单。如果用户没有填写他的名字或他的名字是一个号码,我想收到一条警告信息。这是我的C#代码:

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

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Validation.WebService validate = new Validation.WebService();
        bool ismail = validate.isEmail(TextBox2.Text);
        if (!ismail)
          { Label1.Text = "your mail is wrong!!"; }

        Validation.nameVal valid = new Validation.nameVal();
        bool isname = valid.isName(TextBox1.Text);
        if (!isname )
        { Label2.Text = "Your name is wrong!!"; }

        else if (isname==null)
        { Label2.Text = "Please fill in your name"; }

        if (isname && ismail)
        {  
            { Label1.Text = null; Label2.Text = null;
            Label3.Text = "Your message has been send!";}
            }
        }
}

使用此代码,我有一个空例外。

3 个答案:

答案 0 :(得分:2)

从你的评论中看出异常就行了:

bool isname = valid.isName(TextBox1.Text);

然后validTextBox1为空。鉴于之前的行是:

Validation.nameVal valid = new Validation.nameVal();

这表明它是后者。

在取消引用之前,您需要检查TextBox1是否为空,或者确保它已正确初始化。

答案 1 :(得分:1)

尝试将您设置为Label1.TextLabel2.Text的代码的最后一位更改为null:

Label1.Text = String.Empty; Label2.Text = String.Empty;

答案 2 :(得分:1)

我猜测也许验证失败了,或者,标签文本设置为null可能导致问题。下面的代码应该有帮助

  Validation.WebService validate = new Validation.WebService();
    bool ismail = (!string.IsNullOrEmpty(Textbox2.Text)) &&  validate.isEmail(TextBox2.Text);
    if (!ismail) 
    {
        Label1.Text = "your mail is wrong!!";
    }
    Validation.nameVal valid = new Validation.nameVal();

    bool isname = (!string.IsNullOrEmpty(Textbox1.Text)) && valid.isName(TextBox1.Text); 

    if (!isname) 
    {
        Label2.Text = "Your name is wrong!!"; 
    } 
    else if (string.IsNullOrEmpty(Textbox1.Text)) 
    {
        Label2.Text = "Please fill in your name"; 
    } 

    if (isname && ismail) 
    {
        {
            Label1.Text = "";
            Label2.Text = "";
            Label3.Text = "Your message has been send!";
        }
    }
}