【问题标题】:how to pass session value to external js file如何将会话值传递给外部 js 文件
【发布时间】:2009-11-30 07:11:59
【问题描述】:

我有两个页面 upl.aspx 和 datalist.aspx

我在加载 datalist.aspx 的 upl.aspx 页面中有 iframe

现在我在单选按钮上创建一个会话,点击它在数据列表中 我想将此会话值传递给外部 js 文件,以便 现在我在 uploo.aspx 页面中有一个函数 Hidee() 可以显示它的值

怎么做??

这是我的 up1.aspx 代码

<a onclick="Hidee();" style="cursor: pointer">close</a></div>

<iframe id="frame1" frameborder="0" name="frame1" src="datalist.aspx"></iframe>

这是来自 datalist.aspx 我有我的数据列表

<td align="center" > 


                <asp:RadioButton ID="rdb" runat="server"     CssClass="radio" AutoPostBack="True" OnCheckedChanged="rdb_click" /> 


                <asp:HiddenField ID="HiddenField1" runat="server" Value = '<%#Eval("FileName")%>' /> 
                </td>
                </tr>  

这里是 datalist.cs 的代码隐藏

public void rdb_click(object sender, EventArgs e)
    {
        string value = "";
        for (int i = 0; i < DataList1.Items.Count; i++)
        {
            RadioButton rdb1;
            rdb1 = (RadioButton)DataList1.Items[i].FindControl("rdb");
            if (rdb1 != null)
            {
                if (rdb1.Checked)
                {
                    HiddenField hf = (HiddenField)DataList1.Items[i].FindControl("HiddenField1");
                    value = hf.Value.ToString();
                }
            }
        }
        Session["Background1"] = value;
        Label2.Text = value;

    }

在我的外部 javascript 中我有函数 Hidee();

function Hidee()
{
var div2 = document.getElementById( "divframe1" ); 
div2.style.display = "none";
var div3 = document.getElementById( "aa" );
div3.style.display = "block";
var session ='<%= Session["Background1"] %>';
alert("you have selected" + session);
}

【问题讨论】:

    标签: asp.net javascript iframe


    【解决方案1】:

    如果upl.aspxdatalist.aspx 属于两个不同的 ASP.NET 应用程序(托管在 IIS 的不同应用程序池上),则无法在它们之间共享会话。一种可能的解决方法是将值作为 url 参数传递。


    更新:

    您不能在外部 javascript 文件中使用服务器端表达式。您可以在您的 aspx 页面中声明一个全局变量,该变量将保存将在您的 javascript 文件中使用的值:

    在aspx页面中:

    <script type="text/javascript">
        var background = '<%= Session["Background1"] %>';
    </script>
    

    然后您可以在您的 javascript 文件中的 Hidee 函数中使用 background 变量。

    【讨论】:

    • 这两个页​​面是同一个网站的一部分
    • 没关系。您会在页面之间丢失状态。
    • @steven 整个会话的重点不是跟踪页面之间的状态吗?
    • 当您说external javascript 时,您的意思是与您的aspx 页面分开的.js 文件,因为如果是这种情况,您不能在里面写Session["Background1"] %>。
    • @Darin “你可以在你的 javascript 文件中的 Hidee 函数中使用背景变量”但是当我在我的外部 js 文件中使用背景时,它说背景未定义。
    猜你喜欢
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多