Asp.net ASPNET WebForms服务器控件在页面加载中为空
我有一个非常奇怪的情况,我的标签控件在页面加载中为空。甚至可能吗 我有一个网络表单:Asp.net ASPNET WebForms服务器控件在页面加载中为空,asp.net,webforms,nullreferenceexception,Asp.net,Webforms,Nullreferenceexception,我有一个非常奇怪的情况,我的标签控件在页面加载中为空。甚至可能吗 我有一个网络表单: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MyNamespace.Templates.Pages.WebForm1" %> <%@ Register TagPrefix="cw" Namespace="MyNamespace.Templates.Units" Ass
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MyNamespace.Templates.Pages.WebForm1" %>
<%@ Register TagPrefix="cw" Namespace="MyNamespace.Templates.Units" Assembly="MyNamespace" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div style="background-color:yellowgreen;">
FIRST
</div>
<div style="background-color: wheat;">
SECOND
<cw:ArticleColumn runat="server" ID="ac" ArticleID="1899"/>
</div>
</form>
</body>
</html>
“用户控件”列如下所示:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ArticleColumn.ascx.cs" Inherits="MyNamespace.Templates.Units.ArticleColumn" %>
<h2><asp:Label runat="server" ID="myArticleHeading" Text="TOM" /></h2>
<p><asp:Label runat="server" ID="myArticleIntro" Text="TOM" /></p>
<asp:Label runat="server" ID="myArticleBody" Text="TOM" />
public partial class ArticleColumn : UserControlBase<PageTypes.ArticleBase>
{
public int ArticleID { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
var page = DataFactory.Instance.GetPage(new PageReference(ArticleID));
myArticleHeading.Text = page.PageName;
myArticleIntro.Text = page.Property["IntroText"] != null
? page.Property["IntroText"].ToWebString()
: string.Empty;
myArticleBody.Text = page.Property["MainBody"] != null
? page.Property["MainBody"].ToWebString()
: string.Empty;
DataBind();
}
}
解决方案:
我自己刚找到答案。将此声明用于页面上的usercontrol修复了以下问题:
<%@ Register TagPrefix="cw" TagName="ArticleColumn" Src="~/Templates/Units/ArticleColumn.ascx" %>
<%@ Register TagPrefix="cw" TagName="ArticleColumn" Src="~/Templates/Units/ArticleColumn.ascx" %>
此错误声明是使用html视图中的ReSharper右键单击菜单添加的:
<%@ Register TagPrefix="cw" Namespace="MyNamespace.Templates.Units" Assembly="MyNamespace" %>
<%@ Register TagPrefix="cw" Namespace="MyNamespace.Templates.Units" Assembly="MyNamespace" %>
谢谢你的帮助!:) 从页面更新用户控件的内容
在用户控件中声明属性以更新标签内容,并使用用户控件实例页面中的这些属性。数据绑定用于将在aspx部件中编写的控件与服务器端脚本ie绑定 但是您的场景不需要调用databind()。只需将值分配给控件就可以了
尝试从代码中删除数据绑定。我回答了上面我自己的问题 解决方案:我自己刚刚找到了答案。将此声明用于页面上的usercontrol修复了以下问题:
<%@ Register TagPrefix="cw" TagName="ArticleColumn" Src="~/Templates/Units/ArticleColumn.ascx" %>
<%@ Register TagPrefix="cw" TagName="ArticleColumn" Src="~/Templates/Units/ArticleColumn.ascx" %>
此错误声明是使用html视图中的ReSharper右键单击菜单添加的:
<%@ Register TagPrefix="cw" Namespace="MyNamespace.Templates.Units" Assembly="MyNamespace" %>
<%@ Register TagPrefix="cw" Namespace="MyNamespace.Templates.Units" Assembly="MyNamespace" %>
谢谢你的帮助!:) 为什么要在web窗体的页面加载和用户控件的页面加载上对DataBind进行常规调用?事实上,你为什么打电话给数据绑定?另外,你能包括异常/堆栈跟踪吗?数据绑定是我修复这个问题的不顾一切的尝试:S将添加堆栈跟踪.K。摆脱那些DataBind()调用。他们什么也没做。第二,在myArticleHeading.Text=page.PageName之前;第行,添加以下内容:字符串sTest=page.PageName;目标是确认它不是空的“page”变量。解决方案是声明控件而不是声明名称空间(请参见问题)。ReSharper在添加引用时做得不好。如果您的问题已解决,请将此问题设置为“已回答”并进行解释:您应该按路径加载conrol,而不是按程序集和命名空间加载。小心点。我发现我必须在
web.config
文件中注册控件,它才能工作谢谢!我花了一个小时试图找出问题的原因,如果不是这个答案,我会花更多的时间:)我未来的自我注意:检查Visual Studio代码是否在文件顶部格式化声明。我花了整整一个上午试图了解发生了什么。也是ReSharper将引用作为名称空间导入到ascx中。非常感谢。