从 ASP.NET webcontrol 注入 javascript

Posted

技术标签:

【中文标题】从 ASP.NET webcontrol 注入 javascript【英文标题】:Injecting javascript from ASP.NET webcontrol 【发布时间】:2018-06-09 11:26:05 【问题描述】:

我正在制作一个 ASP.NET webforms 应用程序,但在将脚本从 web 控件注入页面时遇到问题。该脚本与控件位于同一文件夹中:

Screenshot1

所以我想:

[ToolboxData("<0:MyWebControl runat=server></0:MyWebControl>")]
[System.Drawing.ToolboxBitmap(typeof(MyWebControl))]
public class MyWebControl : Image


    //...

    protected override void OnPreRender(EventArgs e)
    
        base.OnPreRender(e);


        string scriptStr = "<script src=\"my_script.js\" type=\"text/javascript\">";
        ClientScriptManager csm = Page.ClientScript;
        csm.RegisterClientScriptBlock(this.Page.GetType(), "MyScriptTag", scriptStr);

        //...
    


当我检查脚本是否成功注入时,Chrome 会告诉我:

Screenshot2

我猜这个问题与script src=\"my_script.js\"有关,但我尝试更改路径很久没有成功。

期待一些帮助:)

【问题讨论】:

【参考方案1】:

您需要 javascript 文件的路径与正在呈现用户控件的页面相关。我假设您的 web 项目中的 index.aspx 正在加载用户控件。将 Scripts 文件夹添加到 Web 项目并将 javascript 文件移动到那里。然后,将src 更改为

src=\"/Scripts/my_script.js\"

【讨论】:

太好了,成功了!但这并不是我的意思。是否可以以某种方式将脚本文件封装在我最初放置的位置?我想在第一个项目中使用它 您需要将脚本设置为嵌入式资源并按照其他步骤正确实施。 msdn.microsoft.com/en-us/library/bb398930.aspx - 这是一个较旧的文档,但应该与您正在尝试做的事情相关。

以上是关于从 ASP.NET webcontrol 注入 javascript的主要内容,如果未能解决你的问题,请参考以下文章

获取 ASP.NET System.Web.UI.WebControls.PlaceHolder 的内容

将可重用的 ASP.NET WebControl 连接到加载数据的方法

ASP.NET(c#)生成条形码

在 ASP.NET 中查找使用特定接口的控件

从文件后面的 asp.net 代码中注入 Javascript

ASP.NET C# GridView 合并行列