ASP.NET 名称修改是否一致?

发布于 2024-09-13 02:34:39 字数 290 浏览 6 评论 0 原文

当您有这样的 ASP 控件时:

<asp:TreeView ID="TreeItems" runat="server"></asp:TreeView>

它生成的 html 会破坏名称。如果我想直接访问生成的项目的 id,我可以尝试找出它对名称的影响并查找该 ID。

生成的项目名称是否保证按照 Microsoft 的任何标准以特定方式完成?我只是担心如果他们发布以不同方式实现这一点的新版本 .NET,就会出现这种情况。有没有办法在代码中生成自己修改的名称?

When you have an ASP control like this:

<asp:TreeView ID="TreeItems" runat="server"></asp:TreeView>

The html that it generates mangles the names. If I want to access the ids of the generated items directly, I can try and figure out what it mangles the names to and look for that ID.

Are the names of the items generated guaranteed to be done in a specific way by whatever standard there is from Microsoft? I'm just afraid of this breaking if they release a new version of .NET that does it in a different way. Is there a way to generate the name mangling myself in code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

蓝眼泪 2024-09-20 02:34:39

不能保证一致(这是一个实现细节),

请改用 ClientID(它为您提供生成的 id)。

It isn't guranteed to be consistent (it's an implementation detail)

Use ClientID instead (which gives you the generated id).

忆沫 2024-09-20 02:34:39

我相信使用 .NET 4 上的 ASP.NET,您可以指定以某种方式生成 ID。

请参阅: http: //weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx

此外,如果您使用 jQuery,则可以确定标称ID 将位于客户端 ID 中,因此您可以通过以下方式选择它:

$("input[id*='TreeItems']")

请参阅:http://api.jquery.com/attribute-contains-selector/

I believe with ASP.NET on .NET 4, you can specify that the IDs be generated a certain way.

See: http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx

Additionally, if you are using jQuery, you can be sure that the nominal ID will be in the client ID, so you could select it with something like:

$("input[id*='TreeItems']")

See: http://api.jquery.com/attribute-contains-selector/

醉南桥 2024-09-20 02:34:39

如果您想在客户端脚本中使用它,您可以执行以下操作:

<script type="text/javascript">
    //initialize client names of server side controls.
    var TreeItemsId = "<%= TreeItems.ClientID  %>";    
</script>

当它呈现给客户端时,它看起来像这样:

<script type="text/javascript">
    //initialize client names of server side controls.
    var TreeItemsId = "ctl00_TreeItems";    
</script>

If you want to use it in a client-side script, you can do the following:

<script type="text/javascript">
    //initialize client names of server side controls.
    var TreeItemsId = "<%= TreeItems.ClientID  %>";    
</script>

When it renders out to the client it'll look like something like this:

<script type="text/javascript">
    //initialize client names of server side controls.
    var TreeItemsId = "ctl00_TreeItems";    
</script>
衣神在巴黎 2024-09-20 02:34:39

不,不能保证它是一致的。

只要使用相同版本的框架,它就应该是一致的,但是服务器的更新可能会改变这一点,因此您不应该依赖于知道生成的名称。

使用 ClientID 属性可以找出控件的生成 ID。

No, it's not guaranteed to be consistent.

It should be consistent as long as the same version of the framework is used, but updates to the server may change this, so you shouldn't rely on knowing the generated name.

Use the ClientID property to find out the generated id of a control.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文