Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在不实例化网页的情况下调用网页的方法_C#_Asp.net_Webforms - Fatal编程技术网

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

C# 在不实例化网页的情况下调用网页的方法,c#,asp.net,webforms,C#,Asp.net,Webforms,在我的应用程序中,我们有一个aspx页面frmwebform1。 此页面有一个静态方法GetmyData(),它调用一个helper类HelperClass 但是代码的问题是,当我们调用方法GetHelperData(),在 它实例化frmwebform1以获取其方法FillGrid()。 问题是当它实例化frmwebform1时,我们失去了entityId和entityType值 是否有任何方法可以调用方法FillGrid(),而无需实例化frmwebform1页面。不幸的是,我无法将Fill

在我的应用程序中,我们有一个aspx页面
frmwebform1
。 此页面有一个静态方法
GetmyData()
,它调用一个helper类
HelperClass
但是代码的问题是,当我们调用方法
GetHelperData()
,在 它实例化
frmwebform1
以获取其方法
FillGrid()
。 问题是当它实例化
frmwebform1
时,我们失去了
entityId
entityType

是否有任何方法可以调用方法
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;
        }
    }
//frmwebform1.aspx.cs
公共部分类frmwebform1:System.Web.UI.Page
{
字符串entityId;
字符串实体类型;
受保护的无效页面加载(对象发送方、事件参数e)
{
if(Request.QueryString[“entityId”!=null)
{
entityType=Request.QueryString[“entityType”].ToString().ToUpper();
entityId=Request.QueryString[“entityId”].ToString();
}
如果(!IsPostBack)
{
grdMygrid.DataSource=FillGrid();
grdMygrid.DataBind();
}
}
公共数据表FillGrid()
{
string server=HttpContext.Current.Session[“server”].ToString();
string database=HttpContext.Current.Session[“database”].ToString();
字符串usrID=HttpContext.Current.Session[“user_ID”].ToString();
Data tr=新的getData(服务器、数据库、usrID);
DataTable dt=tr.GetAllenties(entityId);
返回dt;
}
[WebMethod]//AJAX页面方法
公共静态列表GetmyData()
{
HelperClass helper=新的HelperClass();
返回helper.GetHelperData();
}
}
//二等舱
公共类助手类
{
公共列表GetHelperData()
{
frmwebform1 form1=新frmwebform1();
DataTable dt=form1.FillGrid();
列表=新列表();
第1类项目;
foreach(数据行dr在dt.行中)
{
item=新的TaxHistory();
item.txr\u guid=dr[“txr\u guid”].ToString();
item.Amount=string.Format(“{0}”,dr[“Amount”]);
item.Email=dr[“EmailAddress”].ToString();
item.Date=dr[“Date”].ToString();
item.user=dr[“user”].ToString();
列表。添加(项目);
}
退货清单;
}
}

将FillGrid方法设置为静态。

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


创建一个静态类并将该方法放在那里。

而不是让方法从page类中的db获取数据并从其他类调用它,这不是一件好事。若您了解分层体系结构,那个么应该将该方法移动到数据访问层,并从page方法调用该方法,该方法将返回DataTable


我希望它有意义:)

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

实际上,FillGrid方法是静态方法。但由于一些数据泄露,我们将此方法更改为非静态方法。请告知其他建议。