Doğrulama Denetimleri ile TextBoxWatermark Kullanma (C#)

Christian Wenz tarafından

PDF’yi İndir

AJAX Denetim Araç Seti'ndeki TextBoxWatermark denetimi, metin kutusunu genişleterek kutunun içinde bir metin görüntülenmesini sağlar. Kullanıcı kutuya tıkladığında boşaltılır. Kullanıcı metin girmeden kutudan ayrılırsa, önceden doldurulmuş metin yeniden görünür. Bu, aynı sayfadaki ASP.NET Doğrulama Denetimleri ile çakılabilir, ancak bu sorunların üstesinden gelebilir.

Genel Bakış

TextBoxWatermark AJAX Denetim Araç Seti'ndeki denetim, metin kutusunu genişleterek kutunun içinde bir metin görüntülenmesini sağlar. Kullanıcı kutuya tıkladığında boşaltılır. Kullanıcı metin girmeden kutudan ayrılırsa, önceden doldurulmuş metin yeniden görünür. Bu, aynı sayfadaki ASP.NET Doğrulama Denetimleri ile çakılabilir, ancak bu sorunların üstesinden gelebilir.

Adımlar

Örneğin temel kurulumu aşağıdaki gibidir: TextBox denetim, denetim kullanılarak TextBoxWatermarkExtender filigranlanır. Bir düğme geri göndermeyi tetikler ve daha sonra sayfadaki doğrulama denetimlerini tetiklemede kullanılır. Ayrıca, AJAX ASP.NET başlatmak için bir ScriptManager denetim gereklidir:

<form id="form1" runat="server">
 <asp:ScriptManager ID="asm" runat="server" />
 <div>
 <asp:TextBox ID="Name" runat="server" /> <br />
 <asp:Button ID="btn" runat="server" Text="Submit" OnClick="btn_Click" /><br />
 <asp:Label ID="lbl" runat="server" />
 </div>
 <ajaxToolkit:TextBoxWatermarkExtender ID="tbwe" runat="server"
 TargetControlID="Name" WatermarkText=" Your Name " />
</form>

Şimdi, form gönderildiğinde alanda metin olup olmadığını denetleyebilen bir RequiredFieldValidator denetim ekleyin. InitialValue Doğrulayıcının özelliği, denetimde TextBoxWatermarkExtender kullanılan değere ayarlanmalıdır: Form gönderildiğinde, değişmeyen metin kutusunun değeri içindeki filigran değeridir:

<asp:RequiredFieldValidator ID="rfv1" ControlToValidate="Name"
 Text="*" InitialValue=" Your Name " Display="Dynamic" runat="server" />

Ancak bu yaklaşımda bir sorun vardır: İstemci JavaScript'i devre dışı bırakırsa, metin alanı filigran metniyle RequiredFieldValidator önceden doldurulmadığından bir hata iletisi tetiklemez. Bu nedenle, boş bir metin kutusunu denetleyen (özniteliği atlayanInitialValue) ikinci RequiredFieldValidator bir denetim gerekir.

<asp:RequiredFieldValidator ID="rfv2" ControlToValidate="Name"
 Text="*" Display="Dynamic" runat="server" />

Her iki doğrulayıcı da kullandığından Display="Dynamic", son kullanıcı iki doğrulayıcıdan hangisinin tetiklendiğine ilişkin görsel görünümden ayırt edemez; bunun yerine, bunlardan yalnızca biri olduğu görünür.

Son olarak, bir hata iletisi veren bir doğrulayıcı yoksa alandaki metnin çıkışını almak için sunucu tarafı kodu ekleyin:

<script runat="server">
 protected void btn_Click(object sender, EventArgs e)
 {
 lbl.Text = HttpUtility.HtmlEncode(Name.Text);
 }
</script>

Doğrulayıcı, alanda metin olmadığından şikayet eder

Doğrulayıcı alanda metin olmadığından şikayet eder (Tam boyutlu görüntüyü görüntülemek için tıklayın)