代码之家  ›  专栏  ›  技术社区  ›  abramhum

如何使用hiddenfield传递的Json替代ASP web表单中GridView中使用viewstate的方式

  •  1
  • abramhum  · 技术社区  · 7 年前

    我的项目是ASP web表单,我最近希望使用json。net替换我在gridview中使用的viewstate,如下所示:

    [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页面生命周期中何时替换viewstate。 在Asp页面生命周期的哪个阶段,如page\u init,gridview将调用databind(),如果我可以将Json反序列化的数据放入datasource, 然后我认为它可以完全取代viewstate,任何人都知道如何做到这一点,非常感谢。

    1 回复  |  直到 6 年前
        1
  •  1
  •   abramhum    6 年前

    在做了很多研究之后,我发现没有办法使用hiddenfield传递的Json来代替gridview中使用的ViewState。主要原因是ASP中的hiddenfield不是为发送海量数据而设计的。所以,一旦数据足够大,无论我使用什么库来解析hiddenfield中的字符串,它都会变慢。