Bir ASP.NET Panel
içinde DefaultButton
olarak kullanılacak bir Button
bildirdiğinizde ne oluyor? ASP.NET'in, Panel'in içeriğini bir div
haline getireceğini ve ViewState'e bir sürü şey ileteceğini anlıyorum. ViewState içinde, oluşturulan Hyattton'un tıklama etkinliğini işleyen bir JavaScript var mı? ViewState'in sadece bu olduğunu - devlet hakkında bilgi olduğunu sanıyordum. O nasıl çalışır?Panel'in DefaultButton özelliği nasıl çalışır?
5
A
cevap
11
ViewState hakkında haklısınız. Sayfa ve Kontrol değerlerini korumak için tasarlanmıştır. Yani, durumu. Onaylayabilirsiniz here.
Varsayılan düğme hakkında sihir yok. ENTER anahtar olayını bağlamak için div
'a bir javascript eklenir.
Haydi kontrol edelim! Bu kod:
<div id="panel" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'button')">
<input type="submit" name="button" value="this is the button" id="button">
</div>
Bu javascript WebForms motor tarafından üretilen, ancak meraklıysanız, biz bunun için bakabilirsiniz:
<asp:Panel ID="panel" runat="server" DefaultButton="button">
<asp:Button ID="button" runat="server" Text="this is the button" />
</asp:Panel>
Buna render mı
function WebForm_FireDefaultButton(event, target) {
if (event.keyCode == 13) {
var src = event.srcElement || event.target;
if (!src || (src.tagName.toLowerCase() != "textarea")) {
var defaultButton;
if (__nonMSDOMBrowser) {
defaultButton = document.getElementById(target);
}
else {
defaultButton = document.all[target];
}
if (defaultButton && typeof(defaultButton.click) != "undefined") {
defaultButton.click();
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
}
}
}
return true;
}
Odaklanmış denetimin textarea
olup olmadığını sınar. Bunun nedeni, bir textarea
'un içindeki bir ENTER'ın çoğunlukla bir gönderim değil, yeni bir satır olmasıdır.
ViewState, ASP.NET sayfalarının istekleri (bilgileri bir sayfadan diğerine iletmek için) arasında tutabilmesi için bir araçtır - istemci tarafında JavaScript'i etkilemez veya –