Ant*_*ton 12 javascript c# 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('<%=ExampleButton.ClientID%>');
return false;
}
</script>
<asp:Button ID="ExampleButton" runat="server" Text="Example"/>
Run Code Online (Sandbox Code Playgroud)
当用户将鼠标移动到按钮时,我想调用"example"函数,所以我为按钮添加了属性:
ExampleButton.Attributes.Add("onmouseover", "example()");
Run Code Online (Sandbox Code Playgroud)
它运作良好,但当我在同一页面上需要两个控件时,我遇到了问题.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()" />
Run Code Online (Sandbox Code Playgroud)
并且任何按钮上的onmouseover事件总是会调用第二个函数.我可以通过将带有客户端ID的java脚本代码直接添加到attriburte onmouseover来解决此问题.
ExampleButton.Attributes.Add("onmouseover", "[Here will be javascript code]");
Run Code Online (Sandbox Code Playgroud)
但对我来说这不是一个非常和谐的解决方案.请告知,我如何才能更好地解决此类问题.
PS会有更多的Javascript代码,例如我添加了两个字符串upper.
Ron*_*ger 27
我在另一个站点找到了一个允许您使用外部文件的解决方案
if (!Page.ClientScript.IsClientScriptIncludeRegistered("key"))
{
string url = ResolveClientUrl("~/Scripts/file.js");
Page.ClientScript.RegisterClientScriptInclude("key", url);
}
Run Code Online (Sandbox Code Playgroud)
小智 8
你需要使用 this.id
$(document).ready(function () {
load_v<%= this.ID %>
});
function load_v<%= this.ID %>(fromclick) {
alert('anything');
}
Run Code Online (Sandbox Code Playgroud)
因此,即使您在同一页面中需要两个或更多相同的控件,它们也会有不同的ID.希望这可以帮助!欢呼:)
您需要注册脚本ClientScriptManager- 这样它们可以注册一次,无论控件添加到页面的频率如何:
// 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);
}
Run Code Online (Sandbox Code Playgroud)