Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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/3/html/81.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
asp.net:阻止生成服务器控件ID 问题_Asp.net_Html_Controls_Standards - Fatal编程技术网

asp.net:阻止生成服务器控件ID 问题

asp.net:阻止生成服务器控件ID 问题,asp.net,html,controls,standards,Asp.net,Html,Controls,Standards,使用asp.net服务器控件时,会自动生成以下id属性 <img id="ctl00_body_ULRepeater_ctl01_LIRepeater_ctl00_PartImg" src="img.png" /> 虽然我一般不反对id属性,但我尽量避免使用这些不必要的冗长类型的名称,并使用简洁、描述性的名称 问题 我可以阻止asp.net生成这些id属性吗?它们看起来很糟糕,如果我用转发器或其他东西生成很多项目,它们实际上会增加一点页面权重

使用asp.net服务器控件时,会自动生成以下id属性

<img id="ctl00_body_ULRepeater_ctl01_LIRepeater_ctl00_PartImg" src="img.png" />
虽然我一般不反对id属性,但我尽量避免使用这些不必要的冗长类型的名称,并使用简洁、描述性的名称

问题 我可以阻止asp.net生成这些id属性吗?它们看起来很糟糕,如果我用转发器或其他东西生成很多项目,它们实际上会增加一点页面权重。我怎样才能摆脱它们

笔记 我正在Visual Studio 2008中使用asp.net 3.0

[更新]
好的,我可以说子类ClientID是可重写的,但这真的没有意思。我可以在任何地方使用文字控件。或者,我可以咬紧牙关,忍受页面呈现速度慢得让人痛苦,而页面上几乎没有任何内容。

我相信asp.net 4.0中的一个功能将是更好地控制生成的ID。现在,您将获得任何服务器生成的控件的名称mangling。这就是允许asp.net保证控件ID唯一性的原因


为了避免此问题,您可以始终使用纯HTML标记donotrunat=server。但是,如果要创建一个更轻量级的页面,您将牺牲其易用性。

我相信asp.net 4.0中的一个功能将是更好地控制生成的ID。现在,您将获得任何服务器生成的控件的名称mangling。这就是允许asp.net保证控件ID唯一性的原因


为了避免此问题,您可以始终使用纯HTML标记donotrunat=server。但是,如果要创建一个更轻的页面,您将牺牲其易用性。

到目前为止,ControlID是只读属性。在即将发布的ASP.NET Web表单和.NET 4.0中,这将是一个可设置的属性,使用多种不同的方法,如静态、继承等。

到目前为止,ControlID是只读属性。在即将发布的ASP.NET Web Forms with.NET 4.0中,这将是一个可设置的属性,使用多种不同的方法,如static、inherit等。

通过在运行时将每个控件的id属性设置为null,可以完全隐藏这些id属性,例如

Private Sub repeNewsletters_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles repeNewsletters.ItemDataBound

    If e.Item.DataItem Is Nothing Then
        Return
    End If

    Dim hlDetails = DirectCast(e.Item.FindControl("hlDetails"), System.Web.UI.WebControls.HyperLink)

    hlDetails.ID = Nothing

end sub

您可以通过在运行时将每个控件的id属性设置为null来完全隐藏这些id属性,例如

Private Sub repeNewsletters_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles repeNewsletters.ItemDataBound

    If e.Item.DataItem Is Nothing Then
        Return
    End If

    Dim hlDetails = DirectCast(e.Item.FindControl("hlDetails"), System.Web.UI.WebControls.HyperLink)

    hlDetails.ID = Nothing

末端接头

Ugh。我很害怕。似乎我大部分时间都无法在中继器中绕过它。谢谢你的回答,吉姆。我很害怕。似乎我大部分时间都无法在中继器中绕过它。谢谢你的回答,吉姆。真的吗?令人惊叹的你有相关文章的链接吗?@teedyay:包括一段视频,演示如何正确命名客户ID?令人惊叹的你有关于这方面的相关文章的链接吗?@teedyay:包括一段视频,演示了命名客户ID的不同方式