-1

我在 C# (Class1.cs) 中创建了一个使用 javascript 执行一些命令 (JavaScript1.js) 的类。我知道,如果我将此 javascript 导入 WebForm1.ASPX(使用 Class1.cs 的那个),它将起作用。问题是我希望能够在其他 WebForms 中使用这个 Class1.cs 类。为此,我必须将此 javascript 导入每个 WebForm。有没有办法将它导入到类中?

这是一个例子:

主页

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
<%@ Import Namespace="WebApplication1"%>

<script runat="server">
    protected void Test(object sender, EventArgs e)
    {
        Class1 class1 = new Class1();
        class1.callSomething();
    }
</script>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="JavaScript1.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" OnClick="Test" Text ="ALERT"/>
    </div>
    </form>
</body>
</html>

班级

using System;

namespace WebApplication1
{
    public class Class1
    {
        public void callSomething()
        {
            // Here I call the javascript.
        }
    }
}

JAVASCRIPT

function alertTest()
{
    alert('worked');
}

在这种情况下,我正在使用:

<script src="JavaScript1.js" type="text/javascript"></script>

但是这样一来,我就必须把它放在每一个网络表单中。我想做的是在课堂上(Class1)导入。

提前致谢。

4

1 回答 1

1

ClientScriptManager.RegisterClientScriptBlock方法会帮助你。

如果您正在制作自定义控件并希望使用它自动加载 .js 文件,您可以将其作为资源添加到您的项目中:

 public class FancyGridView : GridView
    {

        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
            this.Page.ClientScript.RegisterClientScriptResource(
                typeof(FancyGridView), "FancyCustomControls.Scripts.GridViewScript.js");
        }
...
}

GridViewScript.js需要作为资源添加(在其选项\构建操作中设置“嵌入式资源”)并将其添加到AssemblyInfo

[assembly: WebResource("FancyCustomControls.Scripts.GridViewScript.js", "text/javascript")]
于 2013-06-27T15:15:13.003 回答