繁体   English   中英

不实例化网页的网页调用方法

[英]calling method of a web page without instantiating the page

在我的应用程序中,我们有一个aspx页面frmwebform1 这个页面有一个静态方法GetmyData()这就要求一个辅助类HelperClass但随着代码的问题是,当我们调用方法GetHelperData()在此辅助类就实例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方法为静态。

而不是拥有在页面类中从数据库中获取数据并从其他类中调用数据的方法不是一件好事。 如果您知道分层体系结构,则应将该方法移至数据访问层,然后从页面方法中调用该方法,这将返回DataTable。

我希望这是有道理的:)

我使用了Javascript中的PageMethods。 解决了我的问题。 感谢您的所有答复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM