在我的ASP.Net应用程序中,我使用viewstate存储网格数据,我使用通用类创建viewstate对象,如下所示。
public static PageViewState CurrentViewState
{
get
{
if (_app == null)
{
Initialize();
}
return _app;
}
}
/// <summary>
/// Creates new object for singleton class
/// </summary>
private static void Initialize()
{
PageViewState _viewstate = new PageViewState();
_app = _viewstate;
}
/// <summary>
/// Returns viewstate for specified page name
/// </summary>
/// <param name="_page">string : Name of the page</param>
/// <returns></returns>
public object this[string _page]
{
get
{
if (ViewState[_page] != null)
return ViewState[_page];
else
return null;
}
set
{
ViewState[_page] = value;
}
}
我正在使用静态属性,当多个用户在aspx.cs中访问它时是否安全。
Datatable _dtable = (Datatable)PageViewState.CurrentViewState["MyPage"];
ViewState以hiddenfields的形式在客户端存储数据,因此对于每个用户来说它应该是唯一的,我是对的。
答案 0 :(得分:2)
ViewState在客户端存储数据,这是安全的。
答案 1 :(得分:1)
是的,因为它在客户端存储数据,即页面用户正在他的机器上查看。
所以你会看到同一页面的不同版本(在viewstate数据的意义上),我会看到不同的版本。
答案 2 :(得分:1)
ViewState是表示控件状态的加密字符串,它位于页面级别。
使用隐藏的输入字段为每个页面渲染。
<input type="hidden" id="__ViewState" value="uxudhk.." />
其他用户请求的每个页面在页面中都有不同的隐藏字段。所以这总是安全的。如果您的ViewState被修改或更改,您将收到服务器端错误,如InValid ViewState。