Я создал собственный элемент управления с помощью asp.net 2.0. Элемент управления содержит текстовое поле txtDate. Я также создал файл javascript DateMask.js, который содержит функцию maskDate(). Я прикреплял maskDate() с текстовым полем, используя -
txtDate.Attributes.Add( "OnKeyPress", "maskDate()" );
Я также зарегистрировал script с помощью ClientScript.RegisterStartupScript.
Когда я запускаю страницу aspx, содержащую мой пользовательский элемент управления, она генерирует ошибку script, показывающую, что maskDate() - undefined.
Может ли кто-нибудь сказать мне, в чем проблема?
Спасибо за сотрудничество.
Один из способов сделать это - разместить над вашим текстовым полем литеральный элемент управления и присвоить ему script в коде:
literal1.Text = "<script>function maskDate() {...}</script>";
Преимущество этого заключается в том, что вам не нужно будет ссылаться на файл script с некоторыми сложными относительными путями в зависимости от того, где используется ваш пользовательский контроль.
Убедитесь, что вы не забыли <form runat="server" ID="Form1"></form>
в конце тега <head>
!
Как вы можете прочитать в Использование JavaScript Наряду с ASP.NET 2.0 в разделе "Разница между страницами .ClientScript.RegisterStartupScript и page.ClientScript.RegisterClientScriptBlock" они полагаются на расположение тега формы.
Мы показали два разных метода для размещения функций JavaScript на Страница ASP.NET - так что разница? Основное различие что метод RegisterStartupScript помещает JavaScript внизу страницу ASP.NET прямо перед закрывающий элемент. Метод RegisterClientScriptBlock размещает JavaScript сразу после открывающий элемент в стр. Итак, какая разница делать? Это может сделать немного разница, как мы увидим.
DateMask.js
.