如果可能的话,我需要一点指导..
我正在构建一个包含自定义web控件的类库。我已经将许多jQuery UI元素转换为.NET类,以便在页面中动态使用。例如:
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文件引用都被添加到头部,例如
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字典的类,消费应用程序可以填充该类,然后在实例化每个控件时将其提供给每个控件。然而,这似乎令人费解,可能会让其他开发人员感到困惑。
如果有人遇到这个问题,并能给我一些指导,那将是非常棒的:)
发布于 2011-09-01 20:10:56
如果它是一个自定义控件,那么它就有一个对Page类的引用,然后这个类有一个调用ResolveClientUrl的方法来为您生成一个相对的URL。这样就可以处理这种情况了。您可能希望公开一个ScriptsFolder属性,该属性允许您存储脚本的路径,而不是对其进行硬编码。
如果这是针对您自己的自定义项目,在文件夹上进行标准化是可以的,但是如果您正在创建一个要重用的通用库,那么需要一个特定的文件夹并不是一个好主意,然后您可以使用ScriptsFolder属性来解决这个问题,或者将文件夹路径存储在配置中。对应用程序设置的使用进行标准化是可以的。
为了确认这一点,我使用了Telerik控件,它们使用属性定义脚本的自定义路径(因为它们依赖于特定控件的路径),并且它们还具有某些设置,可以通过添加应用程序设置来覆盖这些设置。
HTH。
https://stackoverflow.com/questions/7269748
复制相似问题