是否有一种"移动"控件的可接受方式.
我的客户希望在页面上的几个不同位置之一放置一定量的标记(表示一些视觉元素).位置不同,我不能影响CSS的变化(通过浮动它或其他东西).
我考虑将控件置于多个位置,将Visible设置为"false",然后在该特定页面所需的位置显示该控件.
但是,这个控件的代码并不简单 - 例如,有几个模板部分.不得不在多个地方欺骗它会变得笨拙.此外,出于同样的原因,我不想严格地从代码隐藏中使用此控件.
所以,我想把它放在Web表单的一个地方,根据我想要的地方移动它.我可以将占位符放在不同的位置,将控件放在一个位置,然后将其移除并添加到正确的位置?我怀疑这会奏效.
有人有更好的主意吗?这是最好的做法吗?
我建议使用占位符控件,将标记移动到单独的用户控件中,然后在运行时加载它并将其添加到相关的占位符.
例如.
// Load a user control MyControl userCtrl = (MyControl) LoadControl("~/Controls/MyControl.ascx"); // Or create an instance of your control SubclassedControl subclassedCtrl = new SubclassedControl(); // Do stuff with controls here userCtrl.LoadData(); subclassedCtrl.Text = "Hello World"; // Check which placeholder to add controls to PlaceHolder placeHolder = (foo=="bar") ? placeHolder1 : placeHolder2; // Add the controls placeHolder.Controls.Add(userCtrl); placeHolder.Controls.Add(subclassedCtrl);
这样可以避免使用不必要的标记来混乱页面,并且在运行时加载它也可以避免以后不必要的混淆,当另一个开发人员查看代码并且无法立即看到控件在标记中的某个位置时,但是渲染时页面的完全不同的部分.