asp.net - 找到 2 个具有非唯一 ID #__VIEWSTATE 的元素
问题描述
我正在开发一个旧版 ASP.NET 应用程序,该应用程序在一个网页上呈现两个表单。每个表单都实现了自己的__VIEWSTATE
字段。
由于 Chrome v63 重复的字段名称会在控制台中引发错误:
找到 2 个具有非唯一 ID #__VIEWSTATE 的元素
我没有重写应用程序以删除重复表单的奢侈。是否有另一种方法来重命名__VIEWSTATE
字段,或者其他一些解决方法?
解决方案
在Page
类中有两种方法可以保存和加载视图状态。通过覆盖这两个方法并将它们设置为使用另一个隐藏文件,您可以__VIEWSTATE
为该页面重命名。
以下是您的操作方法:
public partial class SamplePage : Page
{
const string ViewStateHiddenFiledName = "_VIEWSTATE_Page1";
protected override void SavePageStateToPersistenceMedium(object viewState)
{
LosFormatter los = new LosFormatter();
StringWriter writer = new StringWriter();
los.Serialize(writer, viewState);
string serilizedViewState = writer.ToString();
ClientScript.RegisterHiddenField(ViewStateHiddenFiledName, serilizedViewState);
}
protected override object LoadPageStateFromPersistenceMedium()
{
string serilizedViewState = Request.Form[ViewStateHiddenFiledName];
if (serilizedViewState != "")
{
LosFormatter los = new LosFormatter();
return los.Deserialize(serilizedViewState);
}
return null;
}
}
推荐阅读
- itext - 签名字段名称限制
- javascript - jQuery,隐藏和显示内容
- java - 如何解决无法合并dex
- javascript - 问题加载事件 Fullcalendar.io
- java - Vaadin 7 ExcelExport 导出的文件格式不正确。
- android - 使用 Firebase 配置 Proguard 规则
- perl - 管理并行进程
- javascript - AJAX jQuery 新版本关于“插入数据库而不加载页面”
- r - R tablegrob 条件格式,用于根据列值设置颜色
- api - 我使用 JWT 身份验证时无法使用 Symfony 登录 - Symfony 3.4