|
说的好复杂的样子 但是我就是不知道你的意思是什么?
请说详细点 不要惜字如金啊 使用Master.FindControl("TextBoxID")可以获取到母版页的控件,我猜你是要获取母版页中的用户 输入 TextBoxID.ClientID 如果是在后台的话用上述二位的方法均可以,如果是在前台获取TextBox的id的话,模板页里面的服务器控件的id都自动加上了一个特定的字符串以区分可能重复的服务端控件ID,可以右键查看源文件看到 你好.你的问题我写了一点代码给你.希望对你的理解有帮助.有问题可以发信息给我.代码如下: ----Site.master---- <form id="form1" runat="server"> <div> <h1>Master Page Scope</h1> <asp:TextBox ID="tbFromMaster" runat="server" EnableViewState="false"> </asp:TextBox> <button type="button" onclick="GetResult()">GO</button> </div> <hr /> <div> <h1>Content Page Scope</h1> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server" EnableViewState="false"> </asp:ContentPlaceHolder> </div> </form> ----Default.aspx---- <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <span id="txtLabel"></span> </asp:Content> ----Default.aspx.cs---- using System; using System.Text; public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e){ StringBuilder sb = new StringBuilder(); sb.Append("function GetResult(){\n"); sb.Append(String.Format("document.getElementById('txtLabel').innerHTML = document.getElementById('{0}').value;", this.Master.FindControl("tbFromMaster").ClientID)); sb.Append("}\n"); this.ClientScript.RegisterClientScriptBlock(this.GetType(), "demo", sb.ToString(), true); } } 不太明白你的意思. 如果要在客户端用的话,直接用document.getElementById("TextBoxID").value.不过要注意,这时侯的TextBoxID就不是服务器端定义的控件ID了(如果你使用了服务器控件的话).想看其在客户端真实的ID.可以先预览该页面,查看源代码你就会知道了。 如果是将内容拿来服务器端用的话.这里有两种方法: 一、使用在内容页使用this.Master.FindControl("TextBoxID")可以获取到母版页的控件(这里说的是服务器控件). 二、在母版里做属性,比如: public TextBox YourTextBox { get{ return yourTextBox } } 然后在内容页可以使用this.Master.YourTextBox访问(这里是引用类型)。 方法一和方法二的最终目的一样。但两者主要存在性能上的差别。 方法一使用了后期绑定。效率自然底了。方法二使用了属性。直接访问实例的引用,比较好一点。 希望能对你有用。 |