首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

后台aspx.CS 中取得前台由 javascript脚本赋值的 TextBox值的有关问题

2012-03-12 
后台aspx.CS 中取得前台由 javascript脚本赋值的 TextBox值的问题我由 Father.aspx 模态弹出子窗 Child.as

后台aspx.CS 中取得前台由 javascript脚本赋值的 TextBox值的问题
我由 Father.aspx 模态弹出子窗 Child.aspx ,然后,把由 父窗传过来的值,赋与 子窗中的一个 TextBox

,但是在子窗的 aspx.CS 中却取不到空上 TextBox 的值。
请看

Child.aspx

HTML code
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PopKeywords.aspx.cs" Inherits="WebUI.BusinessCenter.PopKeywords" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title>关键字选择</title>    <link href="../css/css.css" rel="stylesheet" type="text/css" />    <base target="_self" /></head><body>    <form id="form1" runat="server">    <table border="0" cellpadding="0" cellspacing="0" align="center">        <tr>            <td height="40" align="center">              <asp:TextBox ID="txbChild" runat="server" Width="400px"></asp:TextBox>             </td>        </tr>    </table></form></body></html><script type="text/javascript" language="javascript"> <!--    var k = window.dialogArguments;    //获得父窗口传递来的值     if (k != null) {        document.getElementById("txbChild").value = k.document.getElementById("txbFather").value;    }    //--> </script> 





然后我在 Child.aspx.CS 后台中取 txbChild 的值

C# code
using System;using System.Data;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace WebUI.BusinessCenter{    public partial class PopKeywords : System.Web.UI.Page    protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                string getFatherValue = this.txbChild_getFather.Text.ToString().Trim();                //实际上,getFatherValue  取得值是空的            }        }}



我分析原因 是这样的:

因为后台是当一加载页面是,程序是由上往下执行,当 后台读到页面中 txbChild 时, javascript 还未给这个 TextBox 赋值,
因为 javascript 是在程序的最后执行的,就是说,程序结束的时,
才执行的这段 js

HTML code
<script type="text/javascript" language="javascript"> <!--    var k = window.dialogArguments;    //获得父窗口传递来的值     if (k != null) {        document.getElementById("txbChild").value = k.document.getElementById("txbFather").value;    }    //--> </script> 


但是这段 js 还只能放在程序最下面,如果放上面,又会导致其它问题,

目前这种情况,怎么才能在 aspx.cs 后台取到前台的这个 txbChild 的值呢 !?

请各位大侠帮忙 !不胜感激!





[解决办法]
把你要传递的值放入url,而不是argument
然后
string getFatherValue = this.Request[key].toString();
[解决办法]
方法有很多种,你要是在服务器端的到,可以这样
Father.aspx

HTML code
<%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"></script><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">  <title></title>  <script type="text/javascript">    function openChild(txt) {      k = window.showModalDialog("Child1.aspx?txt=" + encodeURIComponent(txt.value));    }  </script></head><body>  <form id="form1" runat="server">  <table>    <tr>      <td height="30" bgcolor="#CAD2F4" align="left">        &nbsp;&nbsp;关键字选择      </td>      <td colspan="5" bgcolor="#FFFFFF" align="left">        &nbsp;&nbsp;        <asp:TextBox ID="txbFather" class="inputtext" runat="server" Width="430px" onclick="openChild(this)"></asp:TextBox>      </td>    </tr>  </table>  </form></body></html> 


[解决办法]

探讨
我分析原因 是这样的:

因为后台是当一加载页面是,程序是由上往下执行,当 后台读到页面中 txbChild 时, javascript 还未给这个 TextBox 赋值,
因为 javascript 是在程序的最后执行的,就是说,程序结束的时,
才执行的这段 js....................

[解决办法]
不管你的js放在设计页面的上面还是下面,就算是“放出花来”,它也不可能在服务器端执行。等它在浏览器端执行时,服务器端当前页面实例对象别说什么代码都不执行,就是自身也早已经被GC销毁了。
[解决办法]
探讨
方法有很多种,你要是在服务器端的到,可以这样
Father.aspx


HTML code

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.d……

热点排行