我有两页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);
}
答案 0 :(得分:3)
如果upl.aspx
和datalist.aspx
是两个不同的ASP.NET应用程序(托管在IIS中的不同应用程序池中)的一部分,则无法在它们之间共享会话。可能的解决方法是将值作为url参数传递。
更新:
您无法在外部JavaScript文件中使用服务器端表达式。您可以在aspx页面中声明一个全局变量,该变量将保存将在您的javascript文件中使用的值:
在aspx页面中:
<script type="text/javascript">
var background = '<%= Session["Background1"] %>';
</script>
然后您可以在javascript文件中的background
函数中使用Hidee
变量。