none
加了母版页后 name 被修改 RRS feed

  • 问题

  • 加了母版页后 那么被加一个 ctl00$body$ 

    在母板页头上 加上 ClientIDMode="Static"

     runat="server" 的控件 ID可以没有 ctl00$body$  

    但是name 上依然有 ctl00$body$ 

    如下

    <input name="ctl00$body$txt_Arrival" type="text" id="txt_test" />   

     

    请高人帮忙   谢谢

    2011年12月19日 12:43

答案

  • 如果想一劳永逸,最好重写用到的控件,只需要继承原来的控件,然后重写Render(注意是Render),之后替换其中的ClientID就可以,Replace就行

     

    或者就是不使用模板页,使用用户控件来代替母版,用户控件会在控件里面也更改ID,但仅限于控件里面

     

    使用服务器控件比较好,主要是得益于ViewState,当然也可以自己写支持ViewState的服务器控件,在企业级开发的时候,比Html控件有用

     

    只要加入runat="server" 都会被页面解析器翻译成服务器控件

    2012年1月1日 13:03
    版主

全部回复

  • 那就不要加runat="server"

    然后在后台代码用Request.Form["name"]的方式取值

     

    <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    
    
      <input   type="text" id="txt_test"  name="txt_test"  />   
      <asp:Button runat="server" ID="btn_Go" Text="submit" onclick="btn_Go_Click" />
    </asp:Content>
    
    
    

     

        protected void btn_Go_Click(object sender, EventArgs e)
        {
            Response.Write(Request.Form["txt_test"]);
        }
    

    执行结果:


    Reference:这个被添加的前缀从何而来?


    Shadowと愉快なコード達
    2011年12月19日 14:06
  • 我会提交到其它页面 所以 最好是服务器控件
    2011年12月20日 3:22
  • 我会提交到其它页面 所以 最好是服务器控件

    被提交的页面也一样用Request.Form["txt_test"] 可以取值
    Shadowと愉快なコード達
    2011年12月20日 3:51
  • 如果想一劳永逸,最好重写用到的控件,只需要继承原来的控件,然后重写Render(注意是Render),之后替换其中的ClientID就可以,Replace就行

     

    或者就是不使用模板页,使用用户控件来代替母版,用户控件会在控件里面也更改ID,但仅限于控件里面

     

    使用服务器控件比较好,主要是得益于ViewState,当然也可以自己写支持ViewState的服务器控件,在企业级开发的时候,比Html控件有用

     

    只要加入runat="server" 都会被页面解析器翻译成服务器控件

    2012年1月1日 13:03
    版主