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

时间:2010-07-15 15:53:58

标签: asp.net html forms master-pages

在我的ASP.Net页面中我有

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

但是,无论何时生成标记,它都会变为

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

是否可以设置表单生成的HTML ID是什么?

4 个答案:

答案 0 :(得分:12)

注意:您正在使用“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>

答案 1 :(得分:4)

在表单标记上将“clientidmode”属性设置为“static”,以防止框架使用“aspnetForm”覆盖它。这让我疯了好几个小时。

答案 2 :(得分:0)

我同意@ Sumo在接受的答案中的评论,我也有同样的情况。

在ASP.NET 4.0的母版页中,如果a没有给出id,渲染的html将自动分配一个,例如。

否则,渲染的html将具有其原始定义的id。

答案 3 :(得分:0)

更改网络配置

import pandas as pd

df = pd.DataFrame({"owner": ["Allen", "Bob", "Cindy", "David", "Emily", "Frank"],
                   "group": ["A", "C", "B", "C", "B", "B"]})

groups = df.groupby("group")
for group in groups:
    print('There are {} owners in group {}'.format(group[1].shape[0], group[0]))
    print('They are {}.'.format(group[1].owner.to_string(index=False).replace('\n', ', ')))
    print()

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