gpt4 book ai didi

asp.net - 如何以编程方式将定义的 ScriptResourceMapping 添加到 Scripts 集合?

转载 作者:行者123 更新时间:2023-12-02 16:12:47 25 4
gpt4 key购买 nike

我在我的母版页中定义了这个 ScriptManager:

    <asp:ScriptManager runat="server">
<Scripts>
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="bootstrap" />
<asp:ScriptReference Name="respond" />
</Scripts>
</asp:ScriptManager>

我还在 BundleConfig.cs 中定义了此 ScriptResourceMapping:

        ScriptManager.ScriptResourceMapping.AddDefinition("respond",
new ScriptResourceDefinition {
Path = "~/Scripts/respond.min.js",
DebugPath = "~/Scripts/respond.js"
});

ScriptManager.ScriptResourceMapping.AddDefinition("jcrop",
new ScriptResourceDefinition {
Path = "~/Scripts/jquery.jcrop.min.js",
DebugPath = "~/Scripts/jquery.jcrop.js"
});

我可以看到“响应”映射加载正常。

现在我需要仅在特定页面上加载“jcrop”映射,因此,我添加了该页面的页面加载事件:

        ScriptManager.GetCurrent(Page).Scripts.Add(new ScriptReference("jcrop"));
ScriptManager.GetCurrent(Page).Scripts.Add(new ScriptReference("~/Scripts/picturecrop.js"));

我可以看到 picturecrop.js 脚本已加载,但 jcrop 映射被简单地忽略。没有错误,也没有影响。如果我将映射更改为显式路径,它可以正常工作,但我无法利用路径/调试路径的区别。

为了能够以编程方式使用我定义的 ScriptResourceMapping,我缺少什么?

谢谢。

最佳答案

我用了两种方法,这两种方法似乎都有效:

ScriptManager.GetCurrent(Page).Scripts.Add(new ScriptReference("jcrop", null));

我认为这个是有效的,因为如果你查看 ScriptReference 的两个构造函数,单参数构造函数的参数名为 path ,而在双参数构造函数中,它们是名称程序集。所以我认为你的问题是它期待一个完整的路径,而你只给它一个名称。

我这样做的另一种方法是:

ScriptManager.RegisterNamedClientScriptResource(Page, "jcrop");

这似乎也工作得很好。我希望这有帮助!

关于asp.net - 如何以编程方式将定义的 ScriptResourceMapping 添加到 Scripts 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20731386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com