.NET - 如何注册启动脚本?

7

我在 .NET 方面的经验有限。我的应用程序报错,报错信息是“this.dateTimeFormat 未定义”,我发现这是一个已知的 ajax bug。其中一篇解决该问题的帖子提到:

“将以下内容注册为启动脚本:”

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

您可以使用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)
}

所以 Wayne,我应该把你的 JavaScript 放在头部吗?我需要把 "string str = ..." 包装在一个名为 "myscript" 的函数中吗? - mrjrdnthms
不,你只需要将这段代码添加到代码后台中,很可能是在Page Load方法中。 "MyScript"只是一个名称,因此您可以检查是否已经加载了特定的脚本。上面的代码是用C#编写的。 - Wayne
我会将这个放在一个外部文件中。这里没有任何需要内嵌的内容。 - steve_c

2

我在我的Web应用程序中遇到了同样的问题(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);
}

将以下代码放入您的Web页面中的codebehind文件中的Page_Load事件中。如果您正在使用Master Pages,请将其放在您的子页面中,而不是Master页面中,因为子页面中的代码将在Master页面之前执行,如果这些代码位于Master页面的codebehind中,那么如果您在子页面上使用AJAX仍然会出现错误。
```csharp protected void Page_Load(object sender, EventArgs e) { // Your code here } ```

0
将其放置在页面的头部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接