在我的ASP.Net的网页我有更改生成的ASP.Net <form> ID?
<form id="MasterPageForm" runat="server">
然而,每当生成的标记,它变成
<form name="aspnetForm" method="post" action="SomePage.aspx..." id="aspnetForm">
是否有可能设置表单生成的HTML ID是什么?
在我的ASP.Net的网页我有更改生成的ASP.Net <form> ID?
<form id="MasterPageForm" runat="server">
然而,每当生成的标记,它变成
<form name="aspnetForm" method="post" action="SomePage.aspx..." id="aspnetForm">
是否有可能设置表单生成的HTML ID是什么?
注意:由于您正在使用母版页,因此您会看到“aspnetForm”。
我发现在这个线程解决方案...
http://forums.asp.net/p/883974/929349.aspx
总之,这就是答案是从该链接的内容:
下面是该错误的代码负责:
public override string UniqueID
{
get
{
if (this.NamingContainer == this.Page)
{
return base.UniqueID;
}
return "aspnetForm";
}
}
正如您所看到的,当命名容器与当前页面不同(当您使用母版页时发生的情况)时e UniqueID属性返回“aspnetForm”。这个属性被渲染成在form标签中发送给客户端的name属性。所以,如果你真的需要,你可以通过从htmlform继承来创建自己的表单,然后重写UniqueID属性或Name属性(这可能是一个更好的选择)。
一个例子定制HtmlForm控件类可能是这样的:
public class Form : System.Web.UI.HtmlControls.HtmlForm
{
public Form() : base() { }
public override string UniqueID
{
get {
if (this.NamingContainer == this.Page)
{ return base.UniqueID; }
return "f";
}
}
}
注意:您当然可以从“F”改变形式的名称到别的东西,或把它读一动态值,从说一个web.config文件等等。
和像这样
<%@Register tagprefix="LA" Namespace="Mynamespace"%>
...
<LA:form runat="server" id="frm">
...
</LA:form>
设置在表单标签的“的ClientIDMode”属性“静”,以防止框架从“aspnetForm”覆盖它使用。这让我坚持了几个小时。
对于那些不熟悉属性的人(如我):应该在主页面参数'<%@ Master ClientIDMode =“Static”'...中设置属性。欲了解更多信息http://weblog.west-wind.com/posts/2009/Nov/07/ClientIDMode-in-ASPNET-40 – IvanH 2014-11-14 09:32:20
我同意@ Sumo在接受的答案下的评论,我也有同样的情况。
在ASP.NET 4.0中,母版页如果没有给出一个id,则呈现的html将被自动分配一个,例如。
否则,呈现的html将具有其原始定义的id。
在ASP.NET 4中,此行为已更改。即使'