今天早上我遇到HandleError遇到了一个小障碍。用户被正确定向到/Views/Shared/Error.aspx。此视图使用主页面也显示正常。它还在其Page_Load方法中记录ViewData.Model.Exception的细节。我认为可以接受使用代码隐藏。
我的问题是:该页面包含一个强类型的部分视图,其中包含一些用户的输入数据。我希望即使在异常发生后也能保留对该数据的访问权限 - 因此用户不会因我们的异常而受到双重处罚(显示错误消息并丢失其表单值)。
有没有办法使用HandleError或其他可重用属性来完成此操作?
答案 0 :(得分:0)
我解决这个问题的方法是使用Ajax.BeginForm(){}
并渲染用户控件,这样您的视图就不会刷新,输入也不会丢失。如果您的错误消息是严格的输入限制,那么您也可以使用jquery.validate.js
文件http://randomactsofcoding.blogspot.com/2008/09/starting-with-jquery-validation-plug-in.html
答案 1 :(得分:0)
最简单的解决方案是后退按钮,它不需要代码: - )
如果您需要基于代码的解决方案,我认为您必须在用户登陆Error.aspx之前保留表单数据。此时发生了重定向,所有请求数据都将丢失。然后,当用户导航到故障视图时,您可以从持久值中恢复表单。
Error.aspx是一般错误页面,也是您的最后一招。除了一般错误处理之外,该页面甚至不应该尝试执行任何任务。