Asp.net 根据设计视图中的需要标记控件属性

Asp.net 根据设计视图中的需要标记控件属性,asp.net,visual-studio,custom-controls,Asp.net,Visual Studio,Custom Controls,我想强制控件的使用者在将控件放置在页面上时为属性指定一个值 在VisualStudio中,当您在用户控件上创建一个不带属性SRC或ALT的标记时,会在下面划线,表示SRC和ALT是必需的属性。我假设这只是编辑器对标记的特殊处理,但是有没有办法为控件定义类似的行为 如果控件具有如下定义的属性: public object AProperty { get { if (ViewState["AProperty"] == null) {

我想强制控件的使用者在将控件放置在页面上时为属性指定一个值

在VisualStudio中,当您在用户控件上创建一个不带属性SRC或ALT的标记时,会在下面划线,表示SRC和ALT是必需的属性。我假设这只是编辑器对标记的特殊处理,但是有没有办法为控件定义类似的行为

如果控件具有如下定义的属性:

public object AProperty
{
    get 
    {
        if (ViewState["AProperty"] == null)
        {
            throw new Exception("AProperty is a required property of this control");
        }
        return ViewState["AProperty"];
    }
    set { ViewState["AProperty"] = value; }
}

是否有方法使用自定义属性或其他在设计器中标记的属性?

您可以使用Microsoft.Build.Framework.Required属性。这需要在生成时设置一个值,否则生成将失败,并显示一条消息,指示属性没有值

我不相信有一个属性指示特定的标记必须包含在服务器控件中(或者至少我在System.Web.UI.HtmlControl.Image类中没有看到任何这样的属性)。我相信小下划线是IDE的HTML验证的一部分


您始终可以创建一个自定义属性,如果某个属性丢失,该属性将抛出警告,而Microsoft.Build.Framework.Required可能是这里的最佳答案。对于偶然发现此问题而无法使用.NET 4.0的其他人,您也可以使用此方法:


是的,我就是这么想的。这不是必须的,但那会很好。我想我将添加一个ToolboxData属性,其中包含属性,因此它马上就在那里。