代码在桌面上工作但不在移动设备上

时间:2015-11-21 14:11:46

标签: c# asp.net

我正在开发ASP.NET应用程序,其中代码在桌面和移动设备的本地IIS上运行良好。 但是,当我将代码复制到生产服务器时,它可以正常用于桌面,但不适用于移动设备。我过去几天都在努力解决这个问题,但仍然没有成功。

这是错误:

  

[NullReferenceException:对象引用未设置为的实例   对象。] BasePage.OnLoad(EventArgs e)+368
  System.Web.UI.Control.LoadRecursive()+54
  System.Web.UI.Page.ProcessRequestMain(布尔   includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)   772

这是我的基页代码,似乎有问题:

HtmlGenericControl liItem1 = new HtmlGenericControl();

liItem1 = (HtmlGenericControl)this.Master.FindControl("logtop_bar");

liItem1.Attributes.Add("style", "display:block");

我不理解为什么它只为小屏幕移动设备投掷错误的逻辑。

但同样的情况不会在当地环境中重现。

1 个答案:

答案 0 :(得分:0)

以[Ondrej Svejdar]为基础回答...... 在您的解决方案中,可能存在Site.Master和Site.Mobile.Master。选择其中一个的机制可能不会选择移动版本,即使您期望它。试试这个

// the assignment below is not needed since you are assigning it again on the very next line
//HtmlGenericControl liItem1 = new HtmlGenericControl();
HtmlGenericControl liItem1 = (HtmlGenericControl)this.Master.FindControl("logtop_bar");
// this line below will print which master page you are using
Response.Write(this.Master.MasterPageFile);
// only set the attribute if it is not null.
if (liItem1 != null) {
    liItem1.Attributes.Add("style", "display:block");
}

此外,如果你总是设置样式(我看不到条件),那么只需在页面的标记中这样做。