问题标签 [viewstate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - .net Viewstate 可能停止工作的可能情况有哪些?
考虑以下代码:
此代码不适用于我的应用程序中的特定页面。在 Page 指令中没有关闭 Viewstate。我不知道发生了什么事。:\
哦,我刚刚想通了。看看你是否注意到它。
.<
.net - 如何在 ASP.NET 中获得更多控制权?
我正在尝试构建一个非常非常简单的“微型网络应用程序”,如果我完成它,我怀疑一些 Stack Overflow 的人会对它感兴趣。我将它托管在我的 C# in Depth 站点上,它是 vanilla ASP.NET 3.5(即不是 MVC)。
流程非常简单:
- 如果用户使用未指定所有参数的 URL 输入应用程序(或者如果其中任何参数无效),我只想显示用户输入控件。(只有两个。)
- 如果用户使用包含所有必需参数的 URL 进入应用程序,我想显示结果和输入控件(以便他们可以更改参数)
这是我自己提出的要求(设计和实现的混合):
- 我希望提交使用 GET 而不是 POST,主要是为了让用户可以轻松地为页面添加书签。
- 我不希望 URL 在提交后看起来很傻,上面有多余的点点滴滴。请仅提供主 URL 和实际参数。
- 理想情况下,我想完全避免需要 JavaScript。在这个应用程序中没有充分的理由。
- 我希望能够在渲染期间访问控件并设置值等。特别是,如果 ASP.NET 无法自动执行此操作,我希望能够将控件的默认值设置为传入的参数值对我来说(在其他限制范围内)。
- 我很高兴自己完成所有参数验证,而且我不需要太多服务器端事件的方式。在页面加载时设置所有内容而不是将事件附加到按钮等非常简单。
大部分都可以,但我还没有找到完全删除视图状态并保留其余有用功能的任何方法。使用这篇博文中的帖子,我设法避免获得视图状态的任何实际值- 但它仍然最终作为 URL 上的参数,看起来非常难看。
如果我将其设为纯 HTML 表单而不是 ASP.NET 表单(即取出runat="server"
),那么我不会得到任何神奇的视图状态 - 但是我无法以编程方式访问控件。
我可以通过忽略大部分 ASP.NET 并使用 LINQ to XML 构建 XML 文档并实现IHttpHandler
. 不过感觉水平有点低。
我意识到我的问题可以通过放松我的约束(例如使用 POST 并且不关心剩余参数)或使用 ASP.NET MVC 来解决,但是我的要求真的不合理吗?
也许 ASP.NET 并没有缩小到这种应用程序?不过,有一个很可能的选择:我只是愚蠢,而且有一种非常简单的方法可以做到,我只是还没有找到。
有什么想法,有人吗?(关于强者如何倒下的提示评论等。这很好 - 我希望我从未声称自己是 ASP.NET 专家,因为事实恰恰相反......)
asp.net - 切换到 ASP.NET 3.5,DropDownList 不记得动态添加的项目
我有一个站点,它使用了几个数据绑定的 DropDownLists。我也在做传统的 if (!IsPostBack) {list.Databind();} 并依靠 viewstate 在回发期间保持列表的填充。我最近将该站点转换为 ASP.NET 3.5,并注意到在回发期间列表为空(好像 ViewState 已禁用)。我没有明确禁用任何东西,我想知道是否有人在他们的视图状态相关控件中看到了类似的变化或行为。
谢谢!
詹姆士
asp.net - 为禁用 ViewState 的 ASP.NET DropDownList 控件模拟“SelectedIndexChanged”的最佳方法
我发现了很多帖子,人们试图解决SelectedIndexChanged
什么时候不工作的问题EnableViewState='false'
。
我有点困惑为什么控制状态不启动并允许它工作,但如果有人也能解释这一点,那就是加分。
一些“黑客”非常“黑客”。就像在页面本身的视图状态上设置一个与下拉值相对应的值,然后将该值与回发期间收到的值进行比较。
我正在寻找最好的最优雅的解决方案(如果有一个好的解决方案)。
我不知道这是否是一个聪明的派生控件或更聪明的东西,但我想确保该解决方案足够通用以“值得信赖”,而不仅仅是一个仅适用于相关特定页面的黑客(这对于这样的黑客!)。
asp.net - 如何持久化 ViewState 以便以后重用?
是否可以保存 ViewState 信息,例如保存到会话中,以便当您离开页面时它会以某种方式持续存在?然后,当您返回该页面时,您可以重新加载视图状态并保留您所做的选择。
背景
我有两个页面,一个报告页面,您可以在其中选择数据,进行一些过滤和排序等,还有一个图表页面,您从报告页面中选择的数据可以以不同的方式呈现,有不同的呈现选择。
如果用户测试了不同的演示文稿,那么简单地使用后退按钮可能意味着在用户返回报告页面之前单击很多次。我想要报告页面的直接链接。
- 使用 QueryString 保存控件状态不是一种选择。
- 我无法为整个应用程序自定义 ViewState 存储。
asp.net - DropDownList OnSelectedIndexChange to 0th index w/out ViewState
我确实关注了文章真正了解 ViewState(顺便说一句很棒的文章),并且填充我的下拉列表效果很好。我什至设置了一个几乎一样好的 OnSelectedIndexChange 事件。
我发现的问题是选择第 0 个索引时不会触发 SelectedIndexChanged 事件。然而,它在所有其他时间都这样做。
这是一些代码:
我想我可以在 Page_Load 方法中进行某种类型的检查:
或者有什么我可以在 OnInit() 方法中设置的东西,我每次都可以重新绑定这些数据?
看,我的自定义 EventHander 引发了一个事件,该事件被该控件所在的父页面捕获,以便父页面可以使用新选择的值执行一些操作。这目前适用于所选索引> 0的所有情况。
我在这个控件中创建了一个包含最近选择的索引的属性,在这种情况下,我的父页面可以在每个 Page_Load 上对这个属性值进行操作......不知道。
接受建议。或者如何强制此 SelectedIndexChanged 事件为第 0 个索引选择触发。
c# - C# asp.net 从 viewstate 动态构建 SQL Query
在我的 C# asp.net webform 上,我有一个搜索页面,其中包含大约 20 个“可以”用作搜索的一部分的元素。以后还会有更多的补充。
我所做的是扩展文本框和下拉列表框以包含一些变量:
fieldname: Tablename.columnname dbtype: DbType.Int32 Joinparam: LEFT Join on otherTable ON xy = ab
这些都存储在视图状态中并重新加载。我这样做的原因是我可以遍历所有控件并拉出所有属于我的类型的控件。然后我可以验证它们以确保它们有输入并且是正确的类型。如果是这样,我可以将它们传递给数据库访问层,让代码动态生成 SQL 语句。
除了 SELECT 语句之外,我不会让任何事情发生。选择和返回的字段不能更改,我使用 db 参数来尝试避免 sql 注入。
我担心的是我将在搜索条件中使用的表和字段名称以及所需的 JOINS 都放在视图状态中。这是一个真正的坏主意吗?
我可以通过在数据库中保存这些信息的表中添加一些 int 索引来掩盖这一点,但这仍然需要放入视图状态,这意味着它们将有一个额外的层来计算。
我采用这种方法的原因是我不想在 DB 层中放置大量的 IF 语句来在那里构建语句。这将是丑陋的地狱和痛苦的维护。
感谢您对此的任何建议。
乔恩
编辑
谢谢大家的建议。谢天谢地,这个应用程序只是一个内部的东西,所以损害是有限的。但我永远不会再使用这种技术,而是会研究搜索模板的想法。
干杯:)
c# - 为什么事件处理程序方法会随机停止工作?
为什么事件处理程序会在一天工作,然后在没有任何代码更改的情况下在第二天停止工作?
我已经多次遇到这个问题,但总是不得不玩弄,不知何故,事件处理程序又神奇地工作了。以下是今天再次发生在我身上的示例。您知道解决此类问题的快速方法吗?
我在这个方法上设置了一个断点,它永远不会被命中。
我试过清理解决方案,重建所有等等。这里有什么见解吗?
编辑:
是的,AutoEventWireup 设置为 true。没有进行其他系统/开发环境更改。我正在使用.NET 3.5。
javascript - ScriptResource.axd 的视图状态无效?
脚本资源和 Web 资源文件在我的应用程序中产生间歇性错误。我一直试图追查问题的原因,但无济于事。我注意到传递的“d”参数有些损坏,我一生都无法弄清楚导致该参数损坏的原因。我注意到我的应用程序中的 JavaScript 代码与为“d”参数生成的散列码交织在一起。
asp.net - asp.net 用什么代替 viewstate
目前我正在使用视图状态来存储我在分页数据时所在的当前页码。我在页面上有 3 个控件,其中包含可以翻页的数据。
到目前为止,跟踪页码的最简单方法是视图状态,但它变得非常大,我不知道为什么。
所以我想用别的东西来跟踪页码,但我不知道该用什么。我应该将其嵌入为隐藏的表单字段吗?在查询字符串中传递它?其他好的选择?