2011-08-03 4 views
0

私はWebアプリケーションを作成していますが、私のページには問題があります! 私は管理ページをデザインしています。ユーザーがこのページに入る前にログインします。 私のページに3つのRequiredFieldValidatorとボタン(AddButton)があり、ユーザーがボタンをクリックしたときにフィールドをチェックしたいが、ページがロードされたときに検証がチェックされ、Visual Studioが例外をスローする: "ControlToValidateプロパティ ' NameValid '空白にすることはできません "NameValidは、ページ内の私の検証コントロールの1つです! と別の質問:データベースとファイルを扱うときに(ブロックを使用する)利点は何ですか?'NameValid'のControlToValidateプロパティは空白にできません

私のクラスはここにある:

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

必須のフィールドバリデータでは、ControlToValidateを指定する必要があります.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(); 
    } 
} 

ソースと同等です:あなたはcontroltovalidateをチェックする必要がhttp://msdn.microsoft.com/en-us/library/yh598w02.aspx

+0

それが機能します!助けてくれてありがとう! – Rasoul

+2

@ Russell.M次に正しい答えとして答えを受け入れ、どちらも評判が良い – slfan

0

。コントローラを割り当てる必要があります。

+0

答えを良くするための方法のサンプルを提供してください – ryadavilli

関連する問題