在不实例化网页的情况下调用网页的方法

本文关键字:网页 调用 方法 情况下 实例化 | 更新日期: 2023-09-27 18:06:41

在我的应用程序中,我们有一个aspx页面frmwebform1。这个页面有一个静态方法GetmyData(),它调用一个助手类HelperClass但是代码的问题是,当我们调用方法GetHelperData()时,在这个helper类,它实例化frmwebform1以获得它的方法FillGrid()。问题是,当它实例化frmwebform1时,我们将失去entityIdentityType的值。

是否有任何方法我可以调用FillGrid()方法而不实例化frmwebform1页面?不幸的是,我不能使FillGrid()方法静态,因为它会危及我们的数据。

事先感谢您的帮助。

//frmwebform1.aspx.cs
public partial class frmwebform1 : System.Web.UI.Page 
{
    string entityId;
    string entityType;
    protected void Page_Load(object sender, EventArgs e)
     {
       if (Request.QueryString["entityId"] != null)
         {
           entityType = Request.QueryString["entityType"].ToString().ToUpper();
           entityId = Request.QueryString["entityId"].ToString();       
         }
       if (!IsPostBack)
         {
           grdMygrid.DataSource = FillGrid();
           grdMygrid.DataBind();
         }
    }
        public  DataTable FillGrid()
            {
                string server = HttpContext.Current.Session["Server"].ToString();
                string database = HttpContext.Current.Session["Database"].ToString();
                string usrID =HttpContext.Current.Session["user_ID"].ToString();
                Data tr = new getData(server, database, usrID);
                DataTable dt = tr.getAllEntities(entityId);
                return dt;
            }
        [WebMethod]      //AJAX page method
            public static List<class1> GetmyData()
            {
                HelperClass helper = new HelperClass();
                return helper.GetHelperData();
            }
 }
//Second Class
 public class HelperClass
    {
        public  List<class1> GetHelperData()
        {
            frmwebform1 form1 = new frmwebform1();
            DataTable dt = form1.FillGrid();
            List<class1> list = new List<class1>();
            class1 item;
            foreach (DataRow dr in dt.Rows)
            {
                item = new TaxHistory();
                item.txr_guid = dr["txr_guid"].ToString();                
                item.Amount = string.Format("{0}", dr["Amount"]);
                item.Email = dr["EmailAddress"].ToString();
                item.Date = dr["date"].ToString();
                item.user = dr["user"].ToString();                
                list.Add(item);
            }
            return list;
        }
    }

在不实例化网页的情况下调用网页的方法

从Page类中提取该方法,因为它显然不应该存在,因为它似乎有不同的职责:

在OOP中我们如何确定对象的职责?

创建一个静态类,并把这个方法放在那里

设置FillGrid方法为静态

而不是在page类中从db获取数据并从其他类调用它的方法是不好的。如果你知道分层架构,你应该将该方法移动到数据访问层,并从page方法调用该方法,这将返回给你DataTable。

我希望这是有意义的:)

我使用了Javascript中的PageMethods。这就解决了我的问题。谢谢你的回答。