2011-04-01 23 views
2

使用用户控件的最佳做法是什么?我的用户控件通常是在服务器上提交数据并在页面中重复使用的表单。在asp.net中制作用户控件的最佳做法?

哪里CSS样式应该放在用户控件内?或在aspx页面,这些样式应该在页面或外部的CSS?

同样成功或faulure消息通常是页面的一部分。但是在使用用户控件时,如果用户控制告诉页面结果或消息应该在控件内?

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

回答

1

首先,通常认为使用外部css文件进行样式制作通常是最佳做法。通过这种方式,您可以在一个中心位置定义样式,因此可以在多个页面中重复使用样式,并且可以修改样式而无需修改所有页面/控件。但是,如果您只有一个页面,则最好将CSS代码放入页眉中。其次,如果你指的是表单验证,我会在你的用户控件中实现这一点。这样,如果您要重复使用您的控件,您无需每次都重写您的验证。

如果您想要将信息从页面传递到用户控件,您只需简单地将适当的属性或方法公开或公开给页面即可。但是,从用户控件传递信息有点困难。一种方法是将委托从页面传递给控件,​​或者通过在控件中引发事件并让页面监听。无论采用哪种方式,让控件知道任何实现细节页面是非常糟糕的做法,因为这会阻止任何重用。因此,如果你想要在主页面上显示你的控件的错误消息,我将把这个消息作为一个属性或通过页面可以听到的事件公开。

+0

谢谢。但是如果在多个页面中使用外部CSS,则会很好。如果他们只是在一个页面中使用,我没有看到它的好处,把它们放在外部。关于第二点,我的意思是保存或编辑消息的成功应该移交给用户。这应该标注在UC或aspx页面,以及UC和aspx页面应该如何传播。 – user576510 2011-04-01 06:52:00

+0

@ user576510:我已更新我的答案,以进一步回答您的问题 – 2011-04-01 07:18:15

1

同样成功或faulure消息通常是页面的一部分

诚然,这是常见的有在同一个地方,错误信息所有相关的页面,可能是通过把它在主页上。

一个常见的方法是为您的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); 
    } 
    ... 
} 
相关问题