在我的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中,此行爲已更改。即使'