【问题标题】:How can I stop Visual Studio 2010 from auto generating controls in a template?如何阻止 Visual Studio 2010 在模板中自动生成控件?
【发布时间】:2012-11-27 17:30:21
【问题描述】:

我正在创建一个包含ListViewUserControl。我将其声明如下,我尝试了使用ParseChildrenPersistChildren 属性的其他方法。

[AspNetHostingPermission(SecurityAction.InheritanceDemand, 
    Level=AspNetHostingPermissionLevel.Minimal),
AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal),
Designer(typeof(ListViewItem)),
ParseChildren(false), PersistChildren(false)]
public partial class CustomListView : System.Web.UI.UserControl, IPaneControl, INamingContainer
{

在里面我有下面的代码来设置ItemTemplaceListView

[Browsable(false),
    DefaultValue(null),
    PersistenceMode(PersistenceMode.InnerProperty),
    TemplateContainer(typeof(ListViewDataItem), BindingDirection.TwoWay)]
public virtual ITemplate ItemTemplate
{
    get { return _lvChild.ItemTemplate; }
    set { _lvChild.ItemTemplate = value; }
}

现在在我将使用该控件的使用者的模板中

<ItemTemplate><asp:HiddenField runat="server" ID="ShippingAddressID" Value='<%#Eval("AddressID") %>' /></ItemTemplate>

在 Visual Studio 2008 中,这导致设计器文件不会自动生成 HiddenField ShippingAddressID,但在转到 Visual Studio 2010 时会自动生成。如何阻止它在 2010 年自动生成?

【问题讨论】:

  • 我所做的某件事似乎让问题消失了,我不知道是哪件事。

标签: c# asp.net visual-studio-2010 visual-studio-2008 asp.net-4.0


【解决方案1】:

如果您不需要在代码隐藏的任何地方引用它,您就不能删除“runat=server”吗?

【讨论】:

  • 我确实必须引用它,如果我切换它,.Net 怎么知道它是服务器端控件?
  • 不会的。这就是为什么我问你是否需要参考它。如果设计器文件中没有条目,您如何在服务器端引用它?你是手动声明的吗?
  • 我正在使用 FindControl 和我自己的实现,具有类似的想法。
猜你喜欢
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 2013-04-26
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多