我编写了一个模板化的用户控件MinimalTemplate,除了将HTML传递到其“ContentTemplate”占位符之外,它目前只执行任何操作。我希望Visual Studio 2008具有与MinimalTemplate相同的智能感知功能,它具有内置的模板化控件,如Repeater。
可能相关:我可以手动输入我的ContentTemplate标签,它将构建并正常运行,但是我收到验证错误。我已经删除了我的ReflectedSchemas文件夹的内容,如this question中所述。
最小模板的完整来源:
MinimalTemplate.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MinimalTemplate.ascx.cs" Inherits="MyProject.MinimalTemplate" %>
<asp:placeholder runat=server id="contentPlaceHolder" />
MinimalTemplate.ascx.cs
using System.Web.UI;
namespace MyProject
{
[ParseChildren(false)]
public partial class MinimalTemplate : System.Web.UI.UserControl
{
[TemplateContainer(typeof(MessageContainer))]
[TemplateInstance(TemplateInstance.Single)]
public ITemplate ContentTemplate
{ get; set; }
void Page_Init()
{
if (ContentTemplate != null)
{
MessageContainer container = new MessageContainer();
ContentTemplate.InstantiateIn(container);
contentPlaceHolder.Controls.Add(container);
}
}
public class MessageContainer : Control, INamingContainer { }
}
}
我可以对MinimalTemplate代码进行哪些更改,以便Visual Studio验证并自动填充其ContentTemplate标记?
答案 0 :(得分:0)
将[PersistenceMode(PersistenceMode.InnerProperty)]
添加到ContentTemplate的属性列表中。添加并重建后,验证错误消失,“ContentTemplate”在Intellisense下拉列表中按预期显示。
在调查期间,我确定我尝试添加此属性两到三次没有效果,所以我希望VS验证器有点不稳定。它有点voodoo programming,但是做了一个Clean / Rebuild All并等待几秒钟,然后再看看验证错误是否仍然存在。
(此外,您不需要此控件的ParseChildren属性。)