我尝试创建一个继承自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);
}
}
}
答案 0 :(得分:0)
我遇到了同样的问题。自动生成的设计器文件建议One option - 从.designer.cs
文件中删除声明,并在代码隐藏文件中明确声明它。
否则,您可以尝试查看此问题中列出的解决方案:Visual Studio 2010 keeps changing my winforms control。
<强>更新强>
有了registered my controls globally in a web.config
file,我只是尝试将tagPrefix
声明更改为唯一的,而不是其他自定义控件共享的现有前缀,突然一切都很好。奇怪的是,我不再在设计器文件中看到声明,但它仍然有效。
仍然令人困惑。