如何使用 Json 通过隐藏字段传递来替换在 ASP Web 窗体中的 GridView 中使用视图状态的方式



我的项目是ASP Web表单,我最近希望使用 json.net 来替换我在gridview中使用的视图状态,如下所示:

[Serializable]
public class MyDataForm
{
public string LocationCode { get; set; }
public string ProjectNo { get; set; }
public string PatientName { get; set; }
public string PersonID { get; set; }
public string PdfURL { get; set; }
public string Memos { get; set; }
}
public List<MyDataForm> MyDataList { set { ViewState["MyDataList"] = value; } get { return ViewState["MyDataList"] as List<MyDataForm>; } }
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.EditIndex = -1;
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataSource = MyDataList;
GridView1.DataBind();
}

我希望将数据存储在 HiddenField 中,然后在每次回发时通过此方式捕获数据:

JsonConvert.DeserializeObject<MyDataForm>( $("#hiddenFieldID").val())

主要问题来自何时替换ASP页面生命周期中的视图状态。 在 Asp 页面生命周期阶段(如 Page_init),网格视图将调用 databind(),如果我可以将 Json 反序列化的数据放在数据源中, 然后我认为它可以完全取代视图状态,有人知道如何做到这一点,非常感谢。

在做了许多研究之后,我发现没有办法使用 Json 通过 hiddenfield 来替换 ViewState。主要原因是ASP中的隐藏字段不是为发送大量数据而设计的。因此,一旦数据足够大,无论我使用什么库来解析 hiddenfield 中的字符串,它都会变慢。

最新更新