加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

更改生成的ASP.Net ID?

发布时间:2020-12-16 00:07:26 所属栏目:asp.Net 来源:网络整理
导读:在我的ASP.Net页面中 form id="MasterPageForm" runat="server" 但是,无论何时生成标记,它都会变成 form name="aspnetForm" method="post" action="SomePage.aspx..." id="aspnetForm" 是否可以设置生成的表单的HTML 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属性.因此,如果您确实需要,可以通过继承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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读