Asp.net

更改生成的 ASP.Net <form> id?

  • January 18, 2019

在我的 ASP.Net 頁面中,我有

&lt;form id="MasterPageForm" runat="server"&gt;

但是,無論何時生成標記,它都會變成

&lt;form name="aspnetForm" method="post" action="SomePage.aspx..." id="aspnetForm"&gt;

是否可以為表單設置生成的 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 文件等。

並像這樣使用

&lt;%@Register tagprefix="LA" Namespace="Mynamespace"%&gt;
...
&lt;LA:form runat="server" id="frm"&gt;
...
&lt;/LA:form&gt;

引用自:https://stackoverflow.com/questions/3257369