标签: viewstate

ASP.NET回发中的数据持久性

语境:

我经常遇到这样的情况:我们的ASP.NET页面必须在GridView上向用户显示数据,让他随心所欲地更改它(单元格上的文本框),并且只有当他实际点击时才将其保存到数据库中.保存按钮".此数据通常是页面上信息的虚拟状态,这意味着用户可以更改所有内容,而无需保存,直到他点击"保存按钮".在这些情况下,总是需要在ASP.NET回发中保留数据列表.这些数据可以是一个DataTable或只是一些的实例List<Someclass>.

我经常看到人们实现这一点并持久保存数据Session.在这种情况下,我通常也会看到一些用户导航时打开多个标签的问题,有些时候在同一页面上.两个不同选项卡的数据将合并在一起,导致信息被扰乱的问题.

如何经常使用Session的示例:

private List<SomeClass> DataList
{
    get
    {
        return Session["SomeKey"] as List<SomeClass>;
    }
    set 
    {
        Session["SomeKey"] = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

人们经常试图通过做这样的事情来解决它:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DataList = null
    }
    else
    {
        FillGridView(DataList);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当两个标签已经加载并且用户正在更改GridView值时,出于某种奇怪的原因,他试图通过点击另一页上的"保存"按钮来保存数据呢?我个人不喜欢这个选项.

其他方法是将数据放在上面ViewState.但是,当涉及到持久存在的大型列表时,它可能会在页面存储时严重影响页面(HiddenField).

但是,这项工作的最佳方式是什么?有一次,我想SessionViewState在哪里一起使用ViewState将保存一个唯一的标识符来索引Session保存的数据.这样可以防止在浏览器上的标签之间共享数据:

private List<SomeClass> DataList
{
    get
    {
        if (ViewState["SomeKey"] == null)
        {
            ViewState["SomeKey"] = Guid.NewGuid().ToString();
        }

        return Session[ViewState["SomeKey"].ToString()] …
Run Code Online (Sandbox Code Playgroud)

c# asp.net viewstate session webforms

13
推荐指数
1
解决办法
1万
查看次数

使用ASP.NET AJAX/ICallbackEventHandler跟踪状态

我在ASP.NET AJAX页面中维护状态时遇到问题.简短版本:我需要一些方法在进行异步回调后更新页面ViewState,以反映服务器在异步调用期间所做的任何状态更改.

这似乎是一个常见问题,但我将描述我的场景以帮助解释:

我有一个类似网格的控件,它有一些JavaScript增强功能 - 即拖放列和行的功能.当列或行被放入新位置时,将调用AJAX方法以通知控制服务器端并触发相应的服务器端事件("OnColumnMoved"或"OnRowMoved").

默认情况下,ASP.NET AJAX调用将整个页面作为请求发送.这样,页面就会经历一个完整的生命周期,视图状态会被持久化,并且在调用RaiseCallbackEvent方法之前会恢复控件的状态.

但是,由于AJAX调用不更新页面,因此即使在移动了列或行之后,ViewState 也会反映控件的原始状态.因此,第二次发生客户端操作时,AJAX请求将转到服务器,并再次构建页面和控件以反映控件的第一个状态,而不是第一个列或行移动后的状态.

这个问题延伸到许多含义.例如,如果我们有一个客户端/ AJAX操作来向网格添加新项目,然后拖动一行,则网格在服务器端构建,其项目少于客户端.

最后,最重要的是,对于我的具体示例,我们正在处理的实际数据源对象存储在ViewState页面中.这是一个设计决策,允许保留被操纵数据的有状态副本,这些数据可以在许多操作后提交给DB,如果用户退出则丢弃.这很难改变.

所以,再次,我需要一种方法,在触发AJAX方法后,在回调时更新页面ViewState.

asp.net viewstate ajax asp.net-ajax

12
推荐指数
1
解决办法
2503
查看次数

如何在全局禁用View State MAC?

我厌倦了包括

EnableViewStateMac="false"
Run Code Online (Sandbox Code Playgroud)

在每一页.全球如何做到这一点?

.net asp.net viewstate

12
推荐指数
2
解决办法
2万
查看次数

隐藏字段vs viewstate

使用时有什么区别

  • 隐藏字段vs视图状态?
  • 什么时候使用?
  • 哪一个更安全?
  • 哪个性能更好?
  • 有什么选择?

asp.net security viewstate ajax performance

12
推荐指数
1
解决办法
2万
查看次数

关于Ember.js中StateManager的最佳实践

StateManager在Ember.js不说,有据可查的,所以我已经得到了有关其使用的一些问题.

  1. 是否应该.goToState只从国家经理内部打电话?
  2. 我有时会发现自己在视图中的状态管理器中镜像方法,例如save: -> StateManager.send("save").这有意义还是我错过了什么?
  3. 模型的所有修改(通常)是否应该通过州经理?
  4. 如果一个视图具有不同的状态,是应该使用ViewState带子状态建模,还是应该使用计算属性和视图属性仅在视图中保存该信息(没有状态管理器知道视图内部状态)?*

*一个示例可以是三步形式,其中相同的模板用于所有状态,但是在三个步骤中显示/隐藏不同的区域.

Github参考:https://github.com/emberjs/ember.js/tree/master/packages/ember-states/lib

javascript viewstate model-view-controller state-management ember.js

12
推荐指数
2
解决办法
2534
查看次数

ASP.net MVC中viewstate的等价物是什么

在asp.net页面中,在回发期间,ViewState使数据持久化.是什么让数据在ASP.net MVC中持久存在?

asp.net viewstate asp.net-mvc-3 asp.net-mvc-4

12
推荐指数
1
解决办法
5万
查看次数

ScriptResource.axd的viewstate无效?

脚本资源和Web资源文件在我的应用程序中生成间歇性错误.我一直试图追逐问题的原因,但无济于事.我注意到传递的"d"参数是一些损坏程度,我不能为我的生活弄清楚是什么导致这个参数被破坏.我注意到在我的应用程序中的JavaScript代码是如何与为"d"参数生成的哈希代码交织在一起的.

Exception genereated on Monday, January 26, 2009, at 2:20 AM
Page location: /ScriptResource.axd?d=y9_dUwBeGqLlRpT5Dml1zhoQvfa7NKdj69EYuV771kzSsa5KOOXBfJZjk%20%20%20%20%20%20%20%20%20%20%20%20if%20(cat_gallery%20!=
Requested Url : http://garmn.factoryoutletstore.com/ScriptResource.axd?d=y9_dUwBeGqLlRpT5Dml1zhoQvfa7NKdj69EYuV771kzSsa5KOOXBfJZjk if (cat_gallery !=
Message: Exception has been thrown by the target of an invocation.
Source: mscorlib
Method: System.Object _InvokeMethodFast(System.Object, System.Object[], System.SignatureStruct ByRef, System.Reflection.MethodAttributes, System.RuntimeTypeHandle)
Stack Trace: at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) at …

javascript viewstate resources

11
推荐指数
2
解决办法
7302
查看次数

如何禁用ViewState?

我将从MS和ASP.NET进入Java世界,并在Java中寻找类似于基于ASP.NET组件的HTML框架.在审查了互联网上的大量链接之后,看起来JSF2(与facelets)是最匹配的(顺便说一下这是真的吗?还是有其他更好的选择?).

我在评估期间遇到的问题是正确使用JSF的视图状态.我的最终使用场景将是一个集群的WEB服务器,我不会有任何会话/服务器存储的对象,我不会使用网络带宽进行虚拟视图状态(请参阅另一个人在这里有点相关的问题JSF调整) .

我拿了一些JSF2教程并在设置了javax.faces.STATE_SAVING_METHOD = client后将ViewState生成为440个字符的HTML(omygod,页面只包含1个虚拟文本输入和1个提交按钮).在"POST on submit"中,我确实只需要来自文本输入的文本(10个字符)而不是虚拟视图状态(440个字符).

所以问题是 - 是否可以在JSF2中禁用视图状态?

相关链接:

更新:相关链接(来自以下评论):

viewstate jsf jsf-2

11
推荐指数
2
解决办法
5951
查看次数

在asp.net中的ViewState Chunking

我一直听到这个词"Viewstate Chunking".什么是Viewstate Chunking?

它是如何为ASP.NET页面工作的?

asp.net viewstate page-lifecycle

11
推荐指数
1
解决办法
5225
查看次数

如何将对象列表存储到ViewState中

我有一个类型列表List<JobSeeker>.我想将它存储在ViewState中.怎么做到这一点?

private List<JobSeeker> JobSeekersList { get; set; }
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net viewstate list

11
推荐指数
1
解决办法
3万
查看次数