[英]calling method of a web page without instantiating the page
在我的应用程序中,我们有一个aspx页面frmwebform1
。 这个页面有一个静态方法GetmyData()
这就要求一个辅助类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;
}
}
使FillGrid方法为静态。
而不是拥有在页面类中从数据库中获取数据并从其他类中调用数据的方法不是一件好事。 如果您知道分层体系结构,则应将该方法移至数据访问层,然后从页面方法中调用该方法,这将返回DataTable。
我希望这是有道理的:)
我使用了Javascript中的PageMethods。 解决了我的问题。 感谢您的所有答复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.