加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何在运行时将ASP.Net控件移动到Web窗体上的不同位置?

发布时间:2020-12-16 03:36:08 所属栏目:asp.Net 来源:网络整理
导读:是否有一种“移动”控件的可接受方式. 我的客户希望在页面上的几个不同位置之一放置一定量的标记(表示一些视觉元素).位置不同,我不能影响CSS的变化(通过浮动它或其他东西). 我考虑将控件置于多个位置,将Visible设置为“false”,然后在该特定页面所需的位置显
是否有一种“移动”控件的可接受方式.

我的客户希望在页面上的几个不同位置之一放置一定量的标记(表示一些视觉元素).位置不同,我不能影响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);

这样可以避免使用不必要的标记来混乱页面,并且在运行时加载它也可以避免以后不必要的混淆,当另一个开发人员查看代码并且无法立即看到控件在标记中的某个位置时,但是渲染时页面的完全不同的部分.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读