На моей странице ASP.Net я имею
<form id="MasterPageForm" runat="server">
Однако каждый раз, когда разметка сгенерирована, она превращается
<form name="aspnetForm" method="post" action="SomePage.aspx..." id="aspnetForm">
Действительно ли возможно установить, каков сгенерированный идентификатор HTML для формы?
Примечание: вы видите «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, который отправляется клиенту в теге формы. поэтому, если вам действительно нужно, вы можете создать свою собственную форму, унаследовав от 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>