Asp.net
更改生成的 ASP.Net <form> id?
在我的 ASP.Net 頁面中,我有
<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"; } }如您所見,當命名容器與目前頁面不同時(使用母版頁時會發生這種情況),UniqueID 屬性返回“aspnetForm”。此屬性被呈現為 name 屬性,該屬性在 form 標記中發送給客戶端。因此,如果您確實需要,可以通過從 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>