使用用户控件的最佳做法是什么?我的用户控件通常是在服务器上提交数据的表单,它们可以在页面中重用。
哪些css样式应放在用户控件内?或者在aspx页面中,这些样式应该在页面还是外部css?
同样,成功或失败的消息通常是页面的一部分。但是在使用用户控件时,用户控件应该告诉页面有关结果还是消息标签应该在控件内?
使用用户控件时需要考虑的其他事项吗?
答案 0 :(得分:1)
首先,通常认为最佳做法是使用外部css文件进行样式设置。这样,您可以在一个中心位置定义样式,这样就可以在多个页面中重复使用它们,您可以修改样式而无需修改所有页面/控件。但是,如果您只有一个页面,那么您可以将CSS代码放在页眉中。
其次,如果你指的是表单验证,我会在你的用户控件中实现它。这样,如果您要重新使用控件,则无需每次都重写验证。
如果要将信息从页面传递到用户控件,则只需将公共或内部公开或适当的属性或方法公开给页面即可。但是,从用户控件传递信息有点困难。一种方法是将委托从页面传递给控件,或者通过在控件中引发事件并让页面监听它。无论哪种方式,让控件知道任何实现细节页面都是不好的做法,因为这会阻止任何重复使用。
因此,如果您想在主页面上显示您的控件的错误消息,我会将此消息公开为属性或通过页面可以侦听的事件。
答案 1 :(得分:1)
页面是控制器,它正在进行保存/编辑,因此它也应该有显示结果的标签。
Page和UserControl应按以下方式进行通信
以下是更多信息:http://www.codeproject.com/KB/user-controls/Page_UserControl.aspx#3
答案 2 :(得分:1)
同样,成功或失败的消息通常是页面的一部分
是的,在所有相关网页上的相同位置都有错误信息,可能是将其放在母版页上。
一种常见的方法是为UserControls和Pages实现一个基类,它实现了常见内容的管道,例如显示错误消息。以下粗糙骨架的线条:
public class MyUserControlBase : UserControl
{
...
protected MyPageBase MyPageBase
{
get
{
PageBase pageBase = Page as PageBase;
if (pageBase == null) throw new InvalidOperationException(
"This UC must be on a Page derived from MyPageBase");
return pageBase;
}
}
...
}
public class MyPageBase : Page
{
...
public void ShowError(string errorMessage)
{
MyMaster master = this.Master as MyMaster;
if (master != null) master.ShowError(errorMessage);
}
...
}