ASP.Net,控制ddl OnClientSelectedIndexChanged目标中的客户端ID

ASP.Net, control clientID in ddl OnClientSelectedIndexChanged target?

本文关键字:客户端 ID 目标 OnClientSelectedIndexChanged Net 控制 ddl ASP      更新时间:2023-09-26

我在ascx控件中有一个runat='server'下拉列表。

我想启动一个用控件ID命名的javascript函数。

function ToggleClasses_<%= Me.ID %>(){...

我这样做是因为它解决了很多问题,并大大减少了需要维护的代码量,因为这个控件在页面上出现了好几次。我不喜欢它,但它似乎是对我正在做的事情最简单、最直接的回答。

我在ddl代码中有以下内容:

...OnClientSelectedIndexChanged="ToggleClasses_<%= Me.ID %>();"...

在javascript块中,函数的名称与您期望的一样正确。

然而,在ddl事件代码中,它被呈现为HTML,如下所示:

onChange="ToggleClasses_&lt;%= Me.ID %>();"

我在SO上尝试了一些方法,但这些都是关于将客户端id放在参数列表中,而不是函数名/调用中,所以对我没有帮助(它们无论如何都不适用于我正在做的事情)。

我该怎么做?

正确的答案是在服务器端代码中添加事件,而不是在ASPX文件中。

例如(在VB中):

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not IsPostBack Then
        ddl.OnClientSelectedIndexChanged = "ToggleClasses_" + Me.ID + "();"
...

您不应该使用'<'在客户端事件中,如OnClientSelectedIndexChanged。这将在呈现到浏览器之前对HTML进行编码。

请使用以下代码使其工作;

OnClientSelectedIndexChanged = "ToggleClasses_" + Me.ClientID + "();";

ClientID将生成渲染的ID。