У меня ограниченный опыт работы с .net. Мое приложение выдает ошибку this.dateTimeFormat is undefined, которую я отследил до известной ошибки ajax. В опубликованном обходном пути говорится:
«Зарегистрируйте в качестве сценария запуска следующее:»
Sys.CultureInfo.prototype._getAbbrMonthIndex = function(value)
{
if (!this._upperAbbrMonths) {
this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
}
return Array.indexOf(this._upperAbbrMonths, this._toUpper(value));
};
Так как мне это сделать? Могу ли я добавить сценарий в конец моего aspx-файла?
Поместите его в заголовок страницы
Вы бы использовали ClientScriptManager.RegisterStartupScript ()
string str = @"Sys.CultureInfo.prototype._getAbbrMonthIndex = function(value) {
if (!this._upperAbbrMonths) {
this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
}
return Array.indexOf(this._upperAbbrMonths, this._toUpper(value));
};";
if (!ClientScriptManager.IsStartupScriptRegistered("MyScript"){
ClientScriptManager.RegisterStartupScript(this.GetType(), "MyScript", str, true)
}
Нет, вы бы просто добавили этот код в код программной части, скорее всего, в методе загрузки страницы. «MyScript» - это просто имя, поэтому вы можете проверить, был ли уже загружен этот конкретный сценарий. Приведенный выше код написан на C#.
Я бы безусловно поместил это во внешний файл. Здесь нет ничего, что должно быть встроено.
У меня была такая же проблема в моем веб-приложении (this.datetimeformat не определено), действительно, это связано с ошибкой в Microsoft Ajax, и эта функция отменяет функцию, вызывающую ошибку в MS Ajax.
Но есть некоторые проблемы с приведенным выше кодом. Вот правильная версия.
string str = @"Sys.CultureInfo.prototype._getAbbrMonthIndex = function(value) {
if (!this._upperAbbrMonths) {
this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
}
return Array.indexOf(this._upperAbbrMonths, this._toUpper(value));
};";
ClientScriptManager cs = Page.ClientScript;
if (!cs.IsStartupScriptRegistered("MyScript"))
{
cs.RegisterStartupScript(this.GetType(), "MyScript", str, true);
}
Поместите событие Page_Load вашей веб-страницы в файл выделенного кода. Если вы используете мастер-страницы, поместите его на дочернюю страницу, а не на мастер-страницу, потому что код на дочерних страницах будет выполняться перед мастер-страницей, и если он находится в коде за мастер-страницей, вы все равно получите ошибка, если вы используете AJAX на дочерних страницах.
Итак, Уэйн, я бы поместил ваш javascript в заголовок? Нужно ли мне заключать "string str = ..." в функцию с именем "myscript"?