Javascript 访问存储在会话中的html表

Javascript 访问存储在会话中的html表,javascript,jquery,asp.net,html,Javascript,Jquery,Asp.net,Html,我想为我想做的事情找到最好的方法。我在数据库中有一个存储过程,它从另一个数据库导入到我们的数据库并链接信息。如果缺少链接信息,则会生成错误,并由用户解决。在我的codebehind中,我得到了这些错误,我创建了一个html表,为每个错误添加行。现在我想跨多个页面持久保存这些信息,所以我将其存储在会话中,因为它只是一个html表,而不是像网格一样的重载控件,那么最好的方法是什么 以会话或任何其他方式存储HTML表,如何在客户端的Javascript或Jquery中访问它,以便利用Jquery函数显

我想为我想做的事情找到最好的方法。我在数据库中有一个存储过程,它从另一个数据库导入到我们的数据库并链接信息。如果缺少链接信息,则会生成错误,并由用户解决。在我的codebehind中,我得到了这些错误,我创建了一个html表,为每个错误添加行。现在我想跨多个页面持久保存这些信息,所以我将其存储在会话中,因为它只是一个html表,而不是像网格一样的重载控件,那么最好的方法是什么 以会话或任何其他方式存储HTML表,如何在客户端的Javascript或Jquery中访问它,以便利用Jquery函数显示显示此信息的可扩展div

protected void BtnAddDock1_Click(object sender, EventArgs e)
    {
        try
        {
            HtmlGenericControl RadDocksDiv = (HtmlGenericControl)Master.FindControl("RadDocksDiv");
            RadDocksDiv.Style["display"] = "block";

            Session["Docking"] = "Open";

            Table tblErrors = new Table();
            tblErrors.ID = "tblErrors";
            tblErrors.CssClass = "tabularData";
            tblErrors.Width = 800;
            TableHeaderRow hr = new TableHeaderRow();
            // hr.ID = "tblErrorsHeaderRow";
            TableHeaderCell thc = new TableHeaderCell();
            //thc.ID = "tblErrorsHeaderCell";
            thc.Text = "Error Descriptions";
            hr.Cells.Add(thc);
            tblErrors.Rows.Add(hr);
            Panel pnlErrors = (Panel)Master.FindControl("pnlErrors");

            Table dobleTable = (Table)Master.FindControl("tblErrors");

            if (dobleTable == null)
            {
                pnlErrors.Controls.Add(tblErrors);



                for (int i = 0; i < 10; i++)
                {
                    TableRow tableRow = new TableRow();
                    string error = "This is a website generated Import Error that needs to be added to the panel on Masterpage!";
                    TableCell tableCell = new TableCell();
                    tableCell.Text = error;
                    tableRow.Cells.Add(tableCell);
                    tblErrors.Rows.Add(tableRow);
                }


                Session["ErrorsTable"] = tblErrors;
            }
            //Table tblErrors = (Table)Master.FindControl("tblErrors");


        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
protectedvoid btnaddock1\u单击(对象发送方,事件参数e)
{
尝试
{
HtmlGenericControl RadDocksDiv=(HtmlGenericControl)Master.FindControl(“RadDocksDiv”);
RadDocksDiv.Style[“显示”]=“块”;
会话[“停靠”]=“打开”;
Table tblErrors=新表();
tblErrors.ID=“tblErrors”;
tblerros.CssClass=“tablerdata”;
t误差宽度=800;
TableHeaderRow hr=新的TableHeaderRow();
//hr.ID=“tblErrorsHeaderRow”;
TableHeaderCell thc=新的TableHeaderCell();
//thc.ID=“tblErrorsHeaderCell”;
thc.Text=“错误描述”;
hr.细胞添加(thc);
t错误.行.添加(hr);
Panel pnlErrors=(Panel)Master.FindControl(“pnlErrors”);
Table dobleTable=(Table)Master.FindControl(“tblErrors”);
if(dobleTable==null)
{
pnlErrors.Controls.Add(tblErrors);
对于(int i=0;i<10;i++)
{
TableRow TableRow=新TableRow();
string error=“这是网站生成的导入错误,需要添加到母版页上的面板!”;
TableCell TableCell=新的TableCell();
tableCell.Text=错误;
tableRow.Cells.Add(tableCell);
t错误.Rows.Add(tableRow);
}
会话[“ErrorsTable”]=t错误;
}
//Table tblErrors=(Table)Master.FindControl(“tblErrors”);
}
捕获(例外情况除外)
{
掷骰子;
}
}
下面是我如何在Javascript中实现这一点的,但当我试图从会话中获取它时,我只能看到System.Web.UI.WebControl.Table

    //Access html table in  session
    var dockingState = '<%= Session["Docking"] %>'

    if (dockingState == "Open") {

        // This doesnt return the html table correctly?!?
        var sessiontblErrors = '<%= Session["ErrorsTable"] %>'

        if (sessiontblErrors != null) {
            var pnlErrors = $("[id$=pnlErrors]");

        }
    }
//在会话中访问html表
var dockingState=“”
如果(对接状态=“打开”){
//这不能正确返回html表?!?
var sessionblerrors=''
if(sessionblerrors!=null){
var pnlErrors=$(“[id$=pnlErrors]”);
}
}

阅读以下链接,您将知道该使用什么。从内存的角度来看,会话是一个代价高昂的操作,如果你有大量的网站,这将是一个大问题


阅读以下链接,您将知道该使用什么。从内存的角度来看,会话是一个代价高昂的操作,如果你有大量的网站,这将是一个大问题


如果您真的想在会话中保留错误以跨页面显示,我会这样做。我不会创建HTML表并存储在会话中,而是在会话中创建一个错误列表,在需要时访问它,并以我想要的任何格式显示它。它可以是一个HTML表、有序列表、跨距等

我只需要创建一个类来保存我的错误消息

public class ErrorMessage
{
  public string ErrorCode { set;get;}
  public string Message { set;get;}
}
在您的代码中,我将不创建HTML表行,而是将其添加到列表中

List<ErrorMessage> objErrorList=new List<ErrorMessage>();

for(int i = 0; i < 10; i++)
{
  ErrorMessage objError=new ErrorMessage();
  objError.ErrorCode=5020;
  objError.Message="There is such a bad error!";
  objErrorList.Add(objError);
}
if(objErrorList.Count>0)
{
  Session["Errors"]=objErrorList;
}
List objErrorList=new List();
对于(int i=0;i<10;i++)
{
ErrorMessage objError=新的ErrorMessage();
对象错误代码=5020;
Message=“出现了如此严重的错误!”;
添加(objError);
}
如果(objErrorList.Count>0)
{
会话[“错误”]=对象列表;
}
无论何时我想要这个,我都会从会话中返回这个。我会把它包装成一个函数

public List<ErrorMessage> GetErrors()
{
  List<ErrorMessage> objList=new List<ErrorMessage>();
  if(Session["Errors"]!=null)
  {
    objList=(List<ErrorMessage>)Session["Errors"];
  }
  return objList;
}
public List GetErrors()
{
列表对象列表=新列表();
如果(会话[“错误”]!=null)
{
objList=(列表)会话[“错误”];
}
返回对象列表;
}
如果您想从javascript中获得这一点,可以通过使用jQuery ajax/getJson调用服务器页面(aspx页面/ashx处理程序)来实现。像这样的东西

var strErrors="<ul>";
$.getJSON('geterrors.ashx', function(data) {
    $.each(data, function(key, val) {
      strErrors+="<li>" + val + "</li>";
    });
});
strErrors+="</ul>";

$("#yourMsgDiv").html(strErrors);
var strErrors=“
    ”; $.getJSON('geterrors.ashx',函数(数据){ $。每个(数据、函数(键、值){ 街道+=“
  • ”+val+“
  • ”; }); }); strErrors+=“
”; $(“#yourMsgDiv”).html(strErrors);
geterrors.ashx
中,您将调用我们的geterrors方法,并将其转换为JSON格式并返回


这种方法的主要优点是演示文稿与数据没有紧密的联系。我们可以以各种样式显示错误消息。

如果您真的希望在会话中保留错误以跨页面显示,我会这样做。我不会创建HTML表并存储在会话中,而是在会话中创建一个错误列表,在需要时访问它,并以我想要的任何格式显示它。它可以是一个HTML表、有序列表、跨距等

我只需要创建一个类来保存我的错误消息

public class ErrorMessage
{
  public string ErrorCode { set;get;}
  public string Message { set;get;}
}
在您的代码中,我将不创建HTML表行,而是将其添加到列表中

List<ErrorMessage> objErrorList=new List<ErrorMessage>();

for(int i = 0; i < 10; i++)
{
  ErrorMessage objError=new ErrorMessage();
  objError.ErrorCode=5020;
  objError.Message="There is such a bad error!";
  objErrorList.Add(objError);
}
if(objErrorList.Count>0)
{
  Session["Errors"]=objErrorList;
}
List objErrorList=new List();
对于(int i=0;i<10;i++)
{
ErrorMessage objError=新的ErrorMessage();
对象错误代码=5020;
Message=“出现了如此严重的错误!”;
添加(objError);
}
如果(objErrorList.Count>0)
{
会话[“错误”]=对象列表;
}
无论何时我想要这个,我都会从会话中返回这个。我会把它包装成一个函数

public List<ErrorMessage> GetErrors()
{
  List<ErrorMessage> objList=new List<ErrorMessage>();
  if(Session["Errors"]!=null)
  {
    objList=(List<ErrorMessage>)Session["Errors"];
  }
  return objList;
}
公共图书馆