2012-05-17 110 views
1

我最近更改了网站的结构以使用母版页。第一个问题是,所有的JavaScript都不起作用,因为所有的id都改变了,所以document.getElementById('id')可以找到id,因为现在id是ct100_something_id。我通过使用ClientIDMode =“Static”得到了修复,但现在我发现我在使用Request.Form时发生了另一个回发问题,并且所有名称属性仍然更改为ct100 _....主页/内容页面和Request.Form /控件名称

As far因为我可以看到没有ClientNameMode,所以如何阻止asp.net创建“花哨”名称属性。我无法在服务器控件上显式设置name属性。

只是为了澄清:

有没有办法让这个:

<asp:HiddenField runat="server" ID="hdnUsername" Value="" /> 

...作为渲染:

<input type="hidden" name="hdnUsername" id="hdnUsername" value="" /> 

...而不是为:

<input type="hidden" name="ctl00$bodyContent$hdnUsername" id="hdnUsername" value="" /> 

+0

它添加前缀所以不会有在内容页 – Shai

+1

在母版的控件和控件之间的ID冲突,如果你正在创建控件动态你仍然可以广告的ClientIDMode =静态那些controlls –

+0

你应该使用document.getElementById('<%= TextBoxName.ClientID%/')。这将设法获得客户端id asp.net生成的 –

回答

-1

对不起,它是ASP.net属性,通过将唯一键作为前缀添加到控件的ID来唯一标识客户端的服务器控件。

+0

他问如何使它停止添加关键字前缀到NAME属性,而不是id – mikeschuld

0

如果您正在访问控件,那么您不需要使用Request.Form并直接访问控件。例如this.TextBoxName.Text

如果不帮你,那是我在过去做的是创建自己的TextBox控制,改变了名称属性相匹配的id属性使用ClientIdMode=Static

时,如果你看看我的博客http://timjames.me/modify-asp.net-textbox-name-attribute

这里是我的代码,虽然它是vb.net,所以你将需要更改为C#

你能适应本作HiddenFields那么这将满足您的需求。

Public Class CleanNamesTextBox 
    Inherits TextBox 

    Private Class CleanNamesHtmlTextWriter 
     Inherits HtmlTextWriter 

     Sub New(writer As TextWriter) 
      MyBase.New(writer) 
     End Sub 

     Public Overrides Sub AddAttribute(key As System.Web.UI.HtmlTextWriterAttribute, value As String) 
      value = value.Split("$")(value.Split("$").Length - 1) 
      MyBase.AddAttribute(key, value) 
     End Sub 

    End Class 

    Protected Overrides Sub Render(writer As System.Web.UI.HtmlTextWriter) 
     Dim noNamesWriter As CleanNamesHtmlTextWriter = New CleanNamesHtmlTextWriter(writer) 
     MyBase.Render(noNamesWriter) 
    End Sub 

    Sub New(id As String, text As String, cssClass As String, clientIDMode As ClientIDMode) 
     MyBase.New() 
     Me.ID = id 
     Me.CssClass = cssClass 
     Me.ClientIDMode = clientIDMode 
     Me.Text = text 
    End Sub 

End Class 
相关问题