.net - Как зарегистрировать скрипт запуска? - PullRequest
7 голосов
/ 24 сентября 2008

У меня ограниченный опыт работы с .net. Мое приложение выдает ошибку this.dateTimeFormat не определено, что я отследил до известной ошибки 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?

Ответы [ 3 ]

9 голосов
/ 24 сентября 2008

Вы бы использовали 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)
}
2 голосов
/ 13 декабря 2008

У меня была такая же проблема в моем веб-приложении (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 на дочерних страницах.

0 голосов
/ 24 сентября 2008

Поместите это в верхнюю часть страницы

...