1

さまざまな入力を含むフォームがあり、そのうちのいくつかは「タイトル」プロパティを使用してヒント付きテキストを入力内に配置します。フォームが送信されると、各入力の値を含む電子メールが送信されます。ただし、フィールドが入力されていない場合は、タイトルが値として使用されます。空のフィールドを確認し、次のように値を手動で削除できます。

if (a_eventSelect.Attributes["title"] == a_eventSelect.Value)
     {
          a_eventSelect.Value = "";
     }

これに関する問題は、フォームに多数の入力がある場合、それぞれの入力をチェックするのが不必要に面倒になる可能性があることです。各コントロールをチェックし、空かどうかをクリアする関数の作成を開始しました。

protected void Page_Load(object sender, EventArgs e)
{
     //initialize
     base.Initialize();

     //on reload of page
     if (IsPostBack)
     {
          //clear blank values
          clear(mainform);

          //send email
          SendEmail();

          //display thank you
          thankyou.Visible = true;

          //hide main
          main.Visible = false;
      }
}

public void clear(Control location)
{
     //for each control in location
     foreach (Control c in location.Controls)
     {
          //if the control has child controls
          if (c.HasControls())
          {
               //call function with new location
               clear(c);
          }
          //some code to check value and title
     }
}

私が理解できないように見えるのは、各コントロールを取得して実際にタイトルと値を比較する方法、または関数内でその値を変更する方法です。何が役立つか考えている人はいますか? 前もって感謝します。

4

2 に答える 2

1

メインフォームのコントロールを繰り返し、「ルート」クラスにキャストして(コントロールがそれを行うと思います)、それらをチェックします

于 2012-06-28T19:16:54.777 に答える
0

答えは私が気づいた2つのポイントに基づいています

  1. すべての入力コントロールをクリアしたい
  2. コード行 (a_eventSelect.Attributes["title"] == a_eventSelect.Value) は、Web フォームで HtmlInputControl を使用していることを示しています。

値を空に設定する例

    private void SetControlValueToEmpty()
    {
        IEnumerable<HtmlInputControl> htmlInputControls = form1.Controls.OfType<System.Web.UI.HtmlControls.HtmlInputControl>();
        foreach (var htmlInputControl in htmlInputControls)
        {
            if (htmlInputControl.Attributes["title"] == htmlInputControl.Value)
            {
                htmlInputControl.Value = "";
            }
        }
    }
于 2012-06-28T19:56:25.633 に答える