'NameValid'的ControlToValidate属性不能为空

时间:2011-08-03 14:39:33

标签: asp.net

我正在编写一个Web应用程序,我的页面上有一个问题! 我设计了一个管理页面,我想在用户进入此页面之前登录! 在我的页面中有三个RequiredFieldValidator和一个按钮(AddButton),我想在用户点击按钮时检查字段,但是当页面加载时,检查验证并且visual studio抛出异常: “'NameValid'的ControlToValidate属性不能为空”NameValid是我在页面中的验证控件之一! 另一个问题:使用数据库和文件时(使用)块的优点是什么?

我的课在这里:

    public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.UrlReferrer == null)
        {
            //a page for log in
            Response.Redirect("~/LogIn.aspx");
        }
    }
    protected void Page_Error(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Write("<h2>Exception</h2><br />");
        Response.Write(Server.GetLastError().Message);
        Server.ClearError();
    }
    protected void AddButton_Click(object sender, EventArgs e)
    {
        const string ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\rasoul\sourcecode\ASP-PROJECTS\UniversityDataBase\DataBase\PersonDataBase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
        using (SqlConnection con=new SqlConnection(ConnectionString))
        {
                string ID = IDField.Text.Trim();
                string Name = NameField.Text.Trim();
                string LastName = LastNameField.Text.Trim();
                DataSet data = new DataSet();
                SqlCommand cmd = con.CreateCommand();
                cmd.CommandText = String.Format("insert into StudentTable values('{0}','{1}','{2}')", ID, Name, LastName);
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
        }
    }
}

我该怎么办?

2 个答案:

答案 0 :(得分:2)

在必填字段验证器中,您必须指定ControlToValidate - 您要验证它是否需要的控件。

MSDN描述 - 使用ControlToValidate属性指定要验证的输入控件。必须将此属性设置为除CustomValidator控件之外的所有验证控件的输入控件的ID,该控件可以留空。如果未指定有效的输入控件,则在呈现页面时将引发异常。 (来源:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.basevalidator.controltovalidate.aspx

使用块的优点是可以确保正确使用IDisposable对象。

using (Font font1 = new Font("Arial", 10.0f)) 
{
    byte charset = font1.GdiCharSet;
}

相当于

{
  Font font1 = new Font("Arial", 10.0f);
  try
  {
    byte charset = font1.GdiCharSet;
  }
  finally
  {
    if (font1 != null)
      ((IDisposable)font1).Dispose();
  }
}

来源:http://msdn.microsoft.com/en-us/library/yh598w02.aspx

答案 1 :(得分:0)

你必须检查controltovalidate。你必须分配控制器。