2013-06-11 1 views
0

У меня есть сайт asp.net, в котором у меня есть два файла, которые нужно поговорить друг с другом. Ниже приведен фрагмент кода из моего файла footer.ascx. Мне нужно отправить строку в файл MobileAd.ascx.cs. Ниже мой соответствующий код из каждого файла.Отправка значения ASP HiddenField через другой элемент управления ASP

Я считаю, что все настроено правильно. Я просто понятия не имею, как правильно передать значение. Значение, которое не пересылается должным образом 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

Вы обнаруживают пользовательский агент с 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;  
} 
+0

Спасибо, это работает из моих тестов до сих пор! У меня еще не было возможности протестировать на планшете, но у меня пальцы скрещены. –