如何将会话值传递给外部js文件

时间:2009-11-30 07:12:00

标签: asp.net javascript iframe

我有两页upl.aspx和datalist.aspx

我在upl.aspx页面中有iframe,它加载了datalist.aspx

现在我正在创建一个关于radiobutton点击的会话,它在datalist里面 我想将此会话值传递给外部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,其中我有我的datalist

<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>  

这里是codebehind 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);
}

1 个答案:

答案 0 :(得分:3)

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


更新:

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

在aspx页面中:

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

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