Изменение сгенерированного ASP.Net <form>id? - PullRequest
8 голосов
/ 15 июля 2010

На моей странице ASP.Net у меня есть

<form id="MasterPageForm" runat="server">

Однако всякий раз, когда генерируется разметка, она превращается в

<form name="aspnetForm" method="post" action="SomePage.aspx..." id="aspnetForm">

Можно ли указать, какой сгенерированный идентификатор HTMLдля формы есть?

Ответы [ 4 ]

12 голосов
/ 15 июля 2010

Примечание: вы видите "aspnetForm", потому что вы используете главную страницу.

Я нашел ваше решение в этой теме ...

http://forums.asp.net/p/883974/929349.aspx

Короче говоря, вот что ответит по этой ссылке:

Вот код, ответственный за эту ошибку:

public override string UniqueID
{
      get
      {
            if (this.NamingContainer == this.Page)
            {
                  return base.UniqueID;
            }
            return "aspnetForm";
      }
}

Как вы можете видеть, когда контейнер именования отличается от текущегоpage (то, что происходит при использовании главной страницы), свойство UniqueID возвращает "aspnetForm".это свойство отображается в атрибуте имени, который отправляется клиенту в теге формы.поэтому, если вам действительно нужно, вы можете создать свою собственную форму, унаследовав ее от 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>
4 голосов
/ 12 января 2013

Установите для атрибута "clientidmode" значение "static" в теге формы, чтобы инфраструктура не перекрывала его с помощью "aspnetForm".Это сводило меня с ума в течение нескольких часов.

0 голосов
/ 18 января 2019

изменение в веб-конфигурации

<pages controlRenderingCompatibilityVersion="4.5" clientIDMode="AutoID"/>

до

<pages controlRenderingCompatibilityVersion="4.5"/>
0 голосов
/ 19 февраля 2015

Я согласен с комментарием @ Sumo к принятому ответу, и у меня была такая же ситуация.

В ASP.NET 4.0, на главной странице, если a не присвоен идентификатор, визуализированный html будет автоматически назначенодин, такой как.

В противном случае визуализированный html будет иметь свой исходный определенный идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...