从web控制代码中包含Javascript服务器端
include Javascript server-side from webcontrol code?
如何从正在加载的webcontrol中包含Javascript到我的页面,在preender事件下?
这是我正在使用的一个函数,但不幸的是它不起作用。
/// <summary>
/// Includes a javascript on the page if it is not already included.
/// </summary>
/// <param name="url">The javascript to include on the page.</param>
public static void IncludeJavascript(string url)
{
string key = MD5.GetMD5Hash(url);
ClientScriptManager manager = (HttpContext.Current.Handler as Page).ClientScript;
if (!manager.IsClientScriptIncludeRegistered(manager.GetType(), key))
{
manager.RegisterClientScriptInclude(manager.GetType(),key, url);
}
}
我是这样使用它的:
ScriptHandler.IncludeJavascript("/scripts/TabControl.js");
正确吗?还是这条路错了?它需要是服务器端路径吗?
我创建的完整TabControl是这样的,正如你所看到的,我重写了prerender过程并在那里使用它。它就是不工作:
[ToolboxData("<{0}:TabControl Title='"My tabcontrol'" runat=server>'n<{0}:TabPage Title='"Default tab'" IsSelected='"True'">Insert tab page content here ...</{0}:TabPage>'n<{0}:TabPage Title='"Secondary tab'" IsSelected='"True'">Insert tab page content here ...</{0}:TabPage>'n</{0}:TabControl>")]
[ParseChildren(false)]
[PersistChildren(true)]
public class TabControl : WebControl
{
private int count;
public TabControl()
{
count = 0;
}
protected override void OnPreRender(EventArgs e)
{
ScriptHandler.IncludeJavascript(ResolveUrl("~/scripts/TabControl.js"));
base.OnPreRender(e);
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public virtual string Title
{
get;
set;
}
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Div;
}
}
public override string ClientID
{
get
{
return "tabSectionWrapper";
}
}
private TabPage selectedTab;
public TabPage SelectedTab
{
get
{
return selectedTab;
}
set
{
selectedTab = value;
}
}
protected override void RemovedControl(Control control)
{
if (control is TabPage)
{
count--;
base.RemovedControl(control);
}
}
protected override void AddedControl(Control control, int index)
{
if (control is TabPage)
{
if ((control as TabPage).IsSelected)
{
this.SelectedTab = control as TabPage;
}
(control as TabPage).ID = "" + count++;
base.AddedControl(control, index);
}
}
protected override void RenderChildren(HtmlTextWriter writer)
{
writer.Write("<div id='"tabContainer'"><ul class='"tabs'">");
foreach (Control control in this.Controls)
{
if (control is TabPage)
{
(control as TabPage).RenderTitle(writer);
}
}
writer.Write("</ul></div>");
writer.Write("<div id='"boxWithContent'">");
foreach (Control control in this.Controls)
{
if (control is TabPage)
{
(control as TabPage).RenderControl(writer);
}
}
writer.Write("</div>");
}
public override void RenderControl(HtmlTextWriter writer)
{
writer.Write("<h1>");
writer.WriteEncodedText(this.Title);
writer.Write("</h1>");
base.RenderControl(writer);
}
protected override void RenderContents(HtmlTextWriter output)
{
base.RenderContents(output);
}
}
我发现该控件必须位于指定runat="server"的表单控件中。我认为任何带有runat="server"指定的控件就足够了,但是没有。
哇。哇。
尝试使用考虑到您的站点可能运行的虚拟目录的相对路径:
IncludeJavascript(ResolveUrl("~/scripts/TabControl.js"));
相关文章:
- 如何在Symfony2中的表单小部件中包含javascript
- Android键盘不适用于包含Javascript的网页
- 在document.write中包含javascript的原因
- Google图表HTML工具提示,其中包含javascript onclick事件
- 将包含 javascript 的文本绑定到模板中的 innerHTML
- 加载包含 Javascript 的外部 PHP 文件
- 将外部 SVG 和包含 JavaScript 加载到 HTML 中
- Orchard - 在分部视图中包含 Javascript 文件
- 如何检查列表是否包含 javascript 中的字符串
- 验证字符串是否仅包含 javascript 中的某些字符
- 在另一个Javascript文件中包含Javascript文件并加载
- 有没有可能在asp-mvc4中使用ajax呈现的视图中包含javascript
- 使用script标记通过CSS文件在程序中包含JavaScript
- 在Phoenix Framework应用程序的某些页面上包含Javascript
- 替换对象's属性,其中包含JavaScript中另一个对象的属性,不包含库
- 如何仅在尚未包含Javascript和css文件的情况下才包含它们
- 添加包含JavaScript而非URL的书签
- Jade包含JavaScript文件的最佳实践
- 如何检查 NS 字符串是否包含 javascript 函数
- 如何使用Javascript Twig模板正确地包含Javascript