gpt4 book ai didi

c# - 母版/内容页和 Request.Form/控件名称

转载 作者:太空宇宙 更新时间:2023-11-03 17:04:00 25 4
gpt4 key购买 nike

我最近更改了一个网站的结构以使用母版页。第一个问题是所有 javascript 都不起作用,因为所有 id 都已更改,因此 document.getElementById('id') 可以找到 id,因为现在 id 是 ct100_something_id。我通过使用 ClientIDMode="Static"解决了这个问题,但现在我发现我在使用 Request.Form 时在回发时遇到了另一个问题,所有名称属性仍然更改为 ct100_....

据我所知,没有 ClientNameMode,那么如何阻止 asp.net 创建“花哨的”名称属性。我无法在服务器控件上显式设置名称属性。

澄清一下:

有没有办法做到这一点:

<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="" />

?

最佳答案

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

如果这对您没有帮助,那么我过去所做的就是创建我自己的 TextBox 控件,它会在使用 ClientIdMode=Static 时更改 name 属性以匹配 id 属性

如果你查看我的博客 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

关于c# - 母版/内容页和 Request.Form/控件名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10630498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com