Asp.net 页面中usercontrol内的触发器函数

Asp.net 页面中usercontrol内的触发器函数,asp.net,user-controls,Asp.net,User Controls,我创建了一个usercontrol来捕获教育细节,它包含5个文本框和一个函数,用于将这些值插入我的数据库。我已经在一个页面中添加了5次usercontrol。我在我的aspx页面上有一个按钮,我希望能够单击并调用该函数来插入值 有人能建议我怎么做吗?将值插入数据库的函数不应该在用户控件中,而应该在页面中。您的usercontrol本身有保存按钮还是只有页面?在第一个变体中,您应该引发一个事件,而页面可以捕获它以保存值。在第二个变体中,您应该通过用户控件迭代(动态添加还是固定?)。您应该添加将文本

我创建了一个usercontrol来捕获教育细节,它包含5个文本框和一个函数,用于将这些值插入我的数据库。我已经在一个页面中添加了5次usercontrol。我在我的aspx页面上有一个按钮,我希望能够单击并调用该函数来插入值


有人能建议我怎么做吗?

将值插入数据库的函数不应该在用户控件中,而应该在页面中。您的usercontrol本身有保存按钮还是只有页面?在第一个变体中,您应该引发一个事件,而页面可以捕获它以保存值。在第二个变体中,您应该通过用户控件迭代(动态添加还是固定?)。您应该添加将文本框的值返回到页面的公共属性,然后可以将这些值保存到数据库中。

在用户控件上放置
public
方法

// Inside MyUserControl
public void SaveIt() {
    // logic to perist the values to db.
}
单击按钮时,从您的ASPX页面(或代码隐藏)循环浏览您的用户控件实例并调用该方法:

// On Click...

MyUserControl[] arrControls = new MyUserControl[] {myUC1, myUC2, myUC3, myUC4, myUC5};
foreach (MyUserControl c in arrControls)
    c.SaveIt();

usercontrol属于视图,数据访问应该在模型中分开(或者至少在controller=page中分开)。否则,在我看来,用户控件可能不是很可重用的。谢谢jdk。没想到这么容易:)@diver-d:真的!尽管它们是UI/可视控件,但它们也是纯.NET类,因此可以使用封装、访问修饰符和引用等相同的OO功能在它们之间来回发送消息,就像普通对象一样。嗨,Tim,不,我只有一个按钮来提交插入。那么我应该让公共属性对文本框值进行设置吗?不知道你是不是这个意思。在页面中使用insert方法的好处是什么?Usercontrol的预期用途是向用户显示并让用户输入文本。如果设计简单,可以在多个页面上重用此控件。控件越专业,它就越不可用。数据访问属于模型,而不是视图。因此,您可以在不更改用户控件的情况下更改模型。或者,您可以在不同的应用程序(windows应用程序、Web服务等)中使用该模型,而无需从仅属于asp.net的控件中提取数据访问功能。我将在页面中使用save函数,遍历usercontrols并从公共属性获取其值(内部引用textboxs'-Text属性)并将其保存到数据库中(或者最好使用模型类或项目来集中处理数据访问)。感谢Tim的建议。我将对此进行研究,因为您所说的完全有意义。