【问题标题】:Accessing value from the controls within a dynamically loaded web user control (asp.net c#)从动态加载的 Web 用户控件 (asp.net c#) 中的控件访问值
【发布时间】:2010-08-01 02:58:40
【问题描述】:

我创建了一个 Web 用户控件 (MemberDetails.ascx),它在我的网站的页面 (Member.aspx) 上动态加载。该控件有一些文本框。我想将用户在这些 TextBoxes 中输入的值存储到 Member.aspx 页面上按钮的单击事件的数据库中(即不是用户控件的一部分)。

例如,我将使用一个小代码。

Member.ascx 页面:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MemberDetails.ascx.cs" Inherits="Users_MemberDetails" %>
<div align="center">
<table runat="server" align="center" bordercolor="Black" id="tbl1">
<tr>
<td>First Name:</td><td><asp:TextBox ID="txtFname" runat="server" /></td>
</tr>
   <tr>
   <td>Last Name:</td><td><asp:TextBox ID="txtLname" runat="server" /></td>
   </tr>
</table>
</div>

成员.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Users_Booking : System.Web.UI.Page
{

 protected void Page_Load(object sender, EventArgs e)
 {
    UserControl Memberuc;
    Memberuc = (UserControl)LoadControl("MemberDetails.ascx");
    Memberuc.ID = "Memberuc1";
    PlaceHolder1.Controls.Add(Memberuc);
 }
 protected void btnSave_Click(object sender, EventArgs e)
 {
   /*Code for saving the input to a database*/
 }
}

我已经尝试了几种方法(使用属性和 FindControl 等)使用各种论坛上的建议来做到这一点,但对我来说没有任何效果。请发布所需的代码。 谢谢。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    由于控件将加载自己的视图状态,您可能会将调用逻辑推送到您的控件中的 DAL:

    public interface IMyUserControl
    {
      void Save();
    }
    
    public class MemberDetails : UserConntrol, IMyUserControl
    {
      // Other stuff here.
    
      public void Save()
      {
        string forename = txtFname.Text;
        string surname = txtLname.Text;
    
        // Call your DAL here.
      }
    }
    

    然后从你的页面调用它:

    protected void btnSave_Click(object sender, EventArgs e)
    {
      var control = PlaceHolder1.FindControl("Memberuc1") as IMyUserControl;
      if (control != null)
      {
        control.Save();
      }
    }
    

    这一切都未经测试,但应该为您指明正确的方向。

    【讨论】:

    • 非常感谢,马修。做到了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    相关资源
    最近更新 更多