动态加载的用户控件与表单form,急!!!1

来源:百度知道 编辑:UC知道 时间:2024/05/13 09:28:40
今天在进行一个脚本验证的时候发现了一个问题,就是动态加载的用户控件无法把表单的值提交到服务器。

以下是代码
<script>
function Button1_onclick()
{
//这些都是脚本验证TextBox不为空
if(!TxtPhone()||!TxtCode()||!TxtEmail()||!TxtCompany()||!TxtAddress()||!TxtName()||!RegEmail()) return;
document.getElementById("ID_FreeData.ascx_m_SendHid").value="1";//设置hidden的值等于1;
document.forms[0].submit();
}
</script>

//后台的Page_load
protected void Page_Load(object sender, EventArgs e)
{
if (this.m_SendHid.Value == "1") /******问题就在这里,hidden的值取不到,就是等于0******/
{
m_btnSend_Click(); //如果hidden等于1,执行邮件发送
}
}

//所用的hidden和button
<input id="Button1" class="CButton" style="width: 80px" type="button" value="发送" onclick="return Button1_onclick()" />
<input id="m_SendHid" runat=

动态加载的控件,如果在提交后要取得值的话,需要在取值之前再创建一次,系统会自动恢复状态.

ascx文件是不会被提交的,document.forms[0].submit(); 提交的还是top.aspx,一样需要在top.aspx中重新加载用户控件,然后才能在用户控件的过程中获取值

top.aspx的page_load
protected void Page_Load(object sender, EventArgs e)
{
MainPageBaseControl control = (MainPageBaseControl)(LoadControl("Controls/" + ControlName));
this.Panel1.Controls.Add(control);
control.ID = "ID_" + ControlName;
}

free.ascx的page_Load

if (this.m_SendHid.Value == "1") /******问题就在这里,hidden的值取不到,就是等于0******/
{
m_btnSend_Click(); //如果hidden等于1,执行邮件发送
}

哦,不好意思我没把事情说清楚:下面的这些代码是Free.ascx用户控件中的代码,至于我是把他动态加到Top.aspx里面了,Top.aspx的page_load已经放了加载的代码了,我的意思就是在用户控件Free.ascx的前台把hideen的值变为1,然后用document.forms[0].submit()提交到服务器上,然后在Free.ascx的后台取hidden的值,如果为1的话就执行发送。
<script>
function Button1_onclick()
{
//这些都是脚本验证TextBox不为空
if(!TxtPhone()||!TxtCode()||!TxtEmail()||!TxtCompany(