0

我尝试创建一个继承自 GridView 的自定义控件(使用 tut http://msdn.microsoft.com/en-us/library/yhzc935f(v=vs.100).aspx)。每次构建后,Visual Studio 都会在 Default.aspx.designer.cs 中将我对自定义命名空间的引用替换为它自己的引用

protected global::System.Web.UI.WebControls.WebParts.GridViewCustom GridView1;

每次我放

protected GridViewCustom.GridViewCustom GridView1;

为什么 ?

在 assembly.cs 我添加了

using System.Web.UI;
...
[assembly: TagPrefix("GridViewCustom", "GridViewCustom")]

在 default.aspx 我有:

    <asp:GridViewCustom ID="GridView1" runat="server">
    </asp:GridViewCustom>

这是我的控件源代码(源文件在 App_Code 中):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace GridViewCustom
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:GridViewCustom runat=server></{0}:GridViewCustom>")]
    public class GridViewCustom : System.Web.UI.WebControls.GridView
    {
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }

            set
            {
                ViewState["Text"] = value;
            }
        }

        protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write(Text);
        }
    }
}
4

1 回答 1

0

我有同样的问题。 自动生成的设计器文件建议了一个选项——从文件中删除声明.designer.cs并在代码隐藏文件中显式声明它。

否则,您可能会尝试查看此问题中概述的解决方案:Visual Studio 2010 keep changed my winforms control

更新:文件中全局注册了我的控件后web.config,我只是尝试将tagPrefix声明更改为独特的东西,而不是其他自定义控件共享的现有前缀,突然一切都很好。奇怪的是,我不再在设计器文件中看到声明,但它仍然有效。

还是很混乱。

于 2013-01-22T14:35:31.003 回答