2

「必須」のクラスを持つすべてのテキストボックスが空白でないことを確認するために、サーバー側の検証を行いたいです。私はこれをjQueryで問題なく実行できますが、C#ではまだプロではありません。これが私が得たものです:

protected void BtnCatering_Click(object sender, EventArgs e)
{
    if (TextBox.CssClass == "required" && TextBox.Text == "")
    {
        MessageBox.Show("Please fill in required fields");
    }
}

<p>
    <label for="BookingName">Booking Name <span>*</span></label>
    <asp:TextBox class="inputText required" ID="BookingName" runat="server" />
</p>
<p>
    <label for="ArrivaltDate">Arrival Date<span>*</span></label>
    <asp:TextBox CssClass="myDatepicker inputText required" id="ArrivaltDate" runat="server" />
</p
4

4 に答える 4

1

このため、ASP.NET をValidation Controls使用して、サーバー側 (およびオプションでクライアント側でも) でデータを検証できます。

RequiredFieldValidator各テキストボックスまたはコントロールでコントロールを使用できますCustomValidator

MSDN: ASP.NET サーバー コントロールの検証の種類 を参照してください。

たとえば、TextBoxIDBookingNameを持つコントロールの場合、次を使用できます。

<asp:RequiredFieldValidator EnableClientScript="False" ID="RequiredFieldValidator1" ControlToValidate="BookingName" runat="server" ErrorMessage="Please fill in this field"></asp:RequiredFieldValidator>

Visual Studioこれらのコントロールを使用している場合は、ツールボックスにあります。

于 2013-08-19T15:53:04.573 に答える
1

このようなものが解決策になるかもしれません:

var results = this.Controls.OfType<TextBox>().Where(c =>
    Convert.ToString(c.Attributes["class"]).Contains("required"));

そして、その結果セットを反復処理できます。多分このように:

foreach (var tb in results)
{
    if (string.IsNullOrEmpty(tb.Text))
    {
        // do something here because this TextBox is empty
    }
}

ただし、より正しいアプローチは、おそらくRequiredFieldValidatorこれらのコントロールのそれぞれに対して を使用して、準備ができたら を呼び出すだけで、 をチェックthis.Validate()してそれに反応できるようにすることです。Pagethis.IsValidPage

于 2013-08-19T15:53:31.460 に答える
1

この方法を試してください。

protected void BtnCatering_Click(object sender, EventArgs e)
{
    if (BookingName.Attributes["class"].ToString().Contains("required") && BookingName.Text == "")
    {
        MessageBox.Show("Please fill in required fields");
    }
}

//BookingNameはテキストボックス ID です。

于 2013-08-19T15:55:18.740 に答える