首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理类库中具有文件依赖性的Web控件

如何处理类库中具有文件依赖性的Web控件
EN

Stack Overflow用户
提问于 2011-09-01 19:38:58
回答 1查看 257关注 0票数 1

如果可能的话,我需要一点指导..

我正在构建一个包含自定义web控件的类库。我已经将许多jQuery UI元素转换为.NET类,以便在页面中动态使用。例如:

代码语言:javascript
复制
    Dim Msg As New Dialog("Dialog Title", New LiteralControl("Dialog Content"))
    Msg.Width.Value = 500
    Msg.Height.Value = 300
    Me.Controls.Add(Msg )

必要的脚本在CreateChildControls期间被插入到头部,任何jQuery文件引用都被添加到头部,例如

代码语言:javascript
复制
    RegisterScriptFile("~/Scripts/jquery-1.5.1.js")
    RegisterScriptFile("~/Scripts/UI/jquery.ui.core.js")
    RegisterScriptFile("~/Scripts/UI/jquery.ui.widget.js")
    RegisterScriptFile("~/Scripts/UI/jquery.ui.mouse.js")
    RegisterScriptFile("~/Scripts/UI/jquery.ui.draggable.js")
    RegisterScriptFile("~/Scripts/UI/jquery.ui.position.js")
    RegisterScriptFile("~/Scripts/UI/jquery.ui.resizable.js")
    RegisterScriptFile("~/Scripts/UI/jquery.ui.dialog.js")

WebControl基类负责将引用插入到页眉中。

这很棒,但是在使用控件库的应用程序中,problem...the文件的路径可能不同。

我可以看到的选择是:

A)将文件作为资源嵌入到库itself....however中。CSS样式在各个应用程序之间是不可定制的,对CSS/JS的任何更改都需要重新编译。

B)定义并使用标准化的文件层次结构。每个需要文件夹的应用程序都会调用带有固定文件层次结构的“Scripts”,这样控件就知道在哪里引用所需的文件。我在这里看到的问题是,使用这种标准化的层级结构可能并不总是可能的,并且可能会使使用该库变得很麻烦。

C)为每个控件创建一个属性,为它需要的每个文件创建一个属性。同样,这将变得繁琐和痛苦的使用,因为每个实例化的控件都必须设置这些属性。

D)创建某种类似ResourceUrlLibrary字典的类,消费应用程序可以填充该类,然后在实例化每个控件时将其提供给每个控件。然而,这似乎令人费解,可能会让其他开发人员感到困惑。

如果有人遇到这个问题,并能给我一些指导,那将是非常棒的:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-01 20:10:56

如果它是一个自定义控件,那么它就有一个对Page类的引用,然后这个类有一个调用ResolveClientUrl的方法来为您生成一个相对的URL。这样就可以处理这种情况了。您可能希望公开一个ScriptsFolder属性,该属性允许您存储脚本的路径,而不是对其进行硬编码。

如果这是针对您自己的自定义项目,在文件夹上进行标准化是可以的,但是如果您正在创建一个要重用的通用库,那么需要一个特定的文件夹并不是一个好主意,然后您可以使用ScriptsFolder属性来解决这个问题,或者将文件夹路径存储在配置中。对应用程序设置的使用进行标准化是可以的。

为了确认这一点,我使用了Telerik控件,它们使用属性定义脚本的自定义路径(因为它们依赖于特定控件的路径),并且它们还具有某些设置,可以通过添加应用程序设置来覆盖这些设置。

HTH。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7269748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档