代码可以在桌面上工作,但不能在移动设备上工作

本文关键字:工作 移动 但不能 桌面 代码 | 更新日期: 2023-09-27 18:23:42

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

这就是错误:

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

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

HtmlGenericControl liItem1 = new HtmlGenericControl();
liItem1 = (HtmlGenericControl)this.Master.FindControl("logtop_bar");
liItem1.Attributes.Add("style", "display:block");

我不明白为什么它只在小屏幕移动设备上抛出错误。

但这种情况不会在当地环境中重现。

代码可以在桌面上工作,但不能在移动设备上工作

基于[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");
}

此外,如果您总是设置样式(我看不到任何条件),那么只需在页面的标记中进行设置即可。