Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET用户控件中的Javascript函数_C#_Javascript_Asp.net_User Controls_Webforms - Fatal编程技术网

C# ASP.NET用户控件中的Javascript函数

C# ASP.NET用户控件中的Javascript函数,c#,javascript,asp.net,user-controls,webforms,C#,Javascript,Asp.net,User Controls,Webforms,我使用javascript函数创建了ASP.NET用户控件: <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestControl.ascx.cs" Inherits="BingTranslator.Web.WebUserControl1" %> <script type="text/javascript"> function example() { alert('<

我使用javascript函数创建了ASP.NET用户控件:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestControl.ascx.cs" Inherits="BingTranslator.Web.WebUserControl1" %>
<script type="text/javascript">
    function example() {
        alert('<%=ExampleButton.ClientID%>');
        return false;
    }
</script>
<asp:Button ID="ExampleButton" runat="server" Text="Example"/>
它工作得很好,但当我在同一页上需要两个控件时,我遇到了一个问题。ASP.NET使用两个同名函数生成代码,有什么问题:

<script type="text/javascript">
    function example() {
        alert('TestControl1_ExampleButton');
        return false;
    }
</script>
<input type="submit" name="TestControl1$ExampleButton" value="Example" id="TestControl1_ExampleButton" onmouseover="example()" />


<script type="text/javascript">
    function example() {
        alert('TestControl2_ExampleButton');
        return false;
    }
</script>
<input type="submit" name="TestControl2$ExampleButton" value="Example" id="TestControl2_ExampleButton" onmouseover="example()" />
但对我来说,这不是一个非常和谐的解决方案。请告知,我如何才能更好地解决此类问题


另外,还会有更多的Javascript代码,例如,我添加了两个字符串。您需要使用注册您的脚本-这样,无论控件添加到页面的频率有多高,它们都可以注册一次:

// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;

// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegistered(cstype, csname1))
{
  String cstext1 = "alert('Hello World');";
  cs.RegisterStartupScript(cstype, csname1, cstext1, true);
}

您需要使用
此.id

$(document).ready(function () {
    load_v<%= this.ID %>    
});

function load_v<%= this.ID %>(fromclick) {
    alert('anything');
}
$(文档).ready(函数(){
装载
});
函数加载(从单击开始){
警惕(“任何事”);
}
因此,即使在同一页中需要两个或多个相同的控件,它们也将具有不同的ID。
希望这有帮助!干杯:)

我在另一个网站上找到了一个解决方案,允许您使用外部文件

if (!Page.ClientScript.IsClientScriptIncludeRegistered("key"))

{

   string url = ResolveClientUrl("~/Scripts/file.js");

   Page.ClientScript.RegisterClientScriptInclude("key", url);

}

是的,这是一种可能的方法,但我不想将javascript代码移动到CS文件中,因为它太大了。@Anton-听起来你需要重构你的CS文件。为什么这不是公认的解决方案?你是一个救世主:但无论如何,这将创建许多相同的Javascript函数,这是应该避免的。另外,我猜在
ready
事件中,您希望编写
load_v()
,对吗?那点击的
是什么意思?
$(document).ready(function () {
    load_v<%= this.ID %>    
});

function load_v<%= this.ID %>(fromclick) {
    alert('anything');
}
if (!Page.ClientScript.IsClientScriptIncludeRegistered("key"))

{

   string url = ResolveClientUrl("~/Scripts/file.js");

   Page.ClientScript.RegisterClientScriptInclude("key", url);

}