我正在开发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");
我不理解为什么它只为小屏幕移动设备投掷错误的逻辑。
但同样的情况不会在当地环境中重现。
答案 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");
}
此外,如果你总是设置样式(我看不到条件),那么只需在页面的标记中这样做。