Doğrulama Denetimleri ile TextBoxWatermark Kullanma (C#)
Christian Wenz tarafından
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 (Tam boyutlu görüntüyü görüntülemek için tıklayın)