子页面a.aspx 嵌套在母版页master页面中,a.aspx页面中有个服务器端的控件, <asp:TextBox ID="TxtName" runat="server" ></TextBox>
在页面的js中改变了TxtName的值,"ctl00$ContentPlaceHolder1$TxtName"是察看源代码的TxtName的ID值,从页面的显示的结果来看,该值是更新过的,但是在a.aspx页面中一个button的click事件中string Uname=TxtName.Text,却得不到TxtName更新过以后的值.不知道为什么,希望各位能给帮忙下!
在页面的js中改变了TxtName的值,"ctl00$ContentPlaceHolder1$TxtName"是察看源代码的TxtName的ID值,从页面的显示的结果来看,该值是更新过的,但是在a.aspx页面中一个button的click事件中string Uname=TxtName.Text,却得不到TxtName更新过以后的值.不知道为什么,希望各位能给帮忙下!
1将a.aspx里面的 <asp:TextBox ID="TxtName" runat="server" > </TextBox> 改成相应的html <input type="text"....>
2取值时用string Uname=Request.Form["TxtName"]
ctl00_ContentPlaceHolder1_TxtName -> ClientID HTML的IDjs用要ClientID
Request.Form[控件ID.UniqueID]
</TextBox> 应该改成</asp:TextBox>。
2、我试过你的问题,不管有没有继承母版页,均可以得到被更新后的值。
我的代码如下(先点击Button1,用js改变textBox的值,再点击Button2获得改变后的值):
前台:
<%@ Page Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="testWeb.WebForm1" %>
<asp:Content ID="Content1" runat="server" contentplaceholderid="ContentPlaceHolder1">
<script language="javascript" type="text/javascript">
function test()
{
//document.getElementById("ctl00_ContentPlaceHolder1_txtTest").value="hahha";
//建议采用下面的方法
document.getElementById('<%=txtTest.ClientID%>').value="hahha";
}
</script>
<asp:Label ID="Label1" runat="server"/>
<asp:TextBox runat="server" Text="test" ID="txtTest" ></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClientClick="test();return false;" Text="Button" />
<asp:Button ID="Button2" runat="server" Text="getValue"
onclick="Button2_Click" />
<br />
</asp:Content>
后台:
protected void Button2_Click(object sender, EventArgs e)
{
this.Label1.Text = this.txtTest.Text;
}
<asp:Button ID="Button1" runat="server" OnClientClick="test();return false;" Text="Button" /> 如果 你在点击Button1的时候还要在后台做其它操作,可以这么写:<asp:Button ID="Button1" runat="server" OnClientClick="test();" Text="Button" onclick="Button1_Click" />
protected void Button1_Click(object sender, EventArgs e)
{
string a = this.txtTest.Text;
}
试试用HIDDEN保存吧。