2012-05-17 45 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 
相關問題