我有一个asp.net网站,其中我有两个文件需要彼此交谈。 下面是我的footer.ascx文件中的一段代码。我需要将一个字符串发送到MobileAd.ascx.cs文件。以下是我每个文件的相关代码。
我相信一切都设置正确我只是不知道如何正确传递价值。未正确发送的值是SendA.value
以下是footer.ascx
的摘录<%@ Register TagPrefix="PSG" TagName="MobileAd" Src="~/MobileAd.ascx" %>
<asp:HiddenField runat="server" ID="SendA" value="" />
<script>
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ||
(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.platform)))
{
document.getElementById('<%=SendA.ClientID%>').value = "mobile";
}
else
{
document.getElementById('<%=SendA.ClientID%>').value = "other";
}
</script>
<div class="bottom" align="center">
<PSG:MobileAd ID="MobileAd" runat="server" AdType = <%=SendA.value%> />
</div>
以下是MobileAd.ascx.cs的接收端
private string _AdType;
public string AdType
{
set
{
this._AdType = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
string html = null;
if (!string.IsNullOrEmpty(_AdType))
{
if (_AdType == "mobile")
{
html = "Mobile Ad Code";
}
else
{
html = "Tablet or Desktop Ad Code";
}
divHtml.InnerHtml = html;
}
答案 0 :(得分:0)
您正在使用javascript检测用户代理。但是,作为一个服务器控件,MobileAd.ascx
在javascript执行之前就已经执行了。您应该通过选中Request.UserAgent
或Request.Browser.IsMobileDevice
在服务器端执行此操作。如果属性AdType
的唯一目的是仅保留用户代理类型,则可以将其删除并尝试修改Page_Load
方法,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
string html = null;
if (Request.Browser.IsMobileDevice)
{
html = "Mobile Ad Code";
}
else
{
html = "Tablet or Desktop Ad Code";
}
divHtml.InnerHtml = html;
}