在asp.net中进行用户控件的最佳实践?

时间:2011-04-01 06:13:00

标签: asp.net .net-3.5

使用用户控件的最佳做法是什么?我的用户控件通常是在服务器上提交数据的表单,它们可以在页面中重用。

哪些css样式应放在用户控件内?或者在aspx页面中,这些样式应该在页面还是外部css?

同样,成功或失败的消息通常是页面的一部分。但是在使用用户控件时,用户控件应该告诉页面有关结果还是消息标签应该在控件内?

使用用户控件时需要考虑的其他事项吗?

3 个答案:

答案 0 :(得分:1)

首先,通常认为最佳做法是使用外部css文件进行样式设置。这样,您可以在一个中心位置定义样式,这样就可以在多个页面中重复使用它们,您可以修改样式而无需修改所有页面/控件。但是,如果您只有一个页面,那么您可以将CSS代码放在页眉中。

其次,如果你指的是表单验证,我会在你的用户控件中实现它。这样,如果您要重新使用控件,则无需每次都重写验证。

如果要将信息从页面传递到用户控件,则只需将公共或内部公开或适当的属性或方法公开给页面即可。但是,从用户控件传递信息有点困难。一种方法是将委托从页面传递给控件,​​或者通过在控件中引发事件并让页面监听它。无论哪种方式,让控件知道任何实现细节页面都是不好的做法,因为这会阻止任何重复使用。

因此,如果您想在主页面上显示您的控件的错误消息,我会将此消息公开为属性或通过页面可以侦听的事件。

答案 1 :(得分:1)

  1. 页面是控制器,它正在进行保存/编辑,因此它也应该有显示结果的标签。

  2. Page和UserControl应按以下方式进行通信

    • Page - > UC通过属性和功能
    • UC - >通过Events
    • 页面
  3. 以下是更多信息: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);
    }
    ...
}