ASP-MVC:授权后重定向时对象实例丢失

时间:2009-01-24 22:47:00

标签: .net asp.net-mvc redirect authorization

我在Action上绑定了表单数据的“Authorize”属性。

如果用户提交表单但未获得授权,则会显示登录提示。登录后,用户被正确重定向,但模型为空。

如何处理?

3 个答案:

答案 0 :(得分:2)

一个基本的解决方案是创建一个类似于Authorize的新ActionFilter属性,区别在于它会在重定向之前将模型存储在Session中,然后用户登录,重定向回数据表单。然后,当授权用户获取数据表单时,用可能存储的值填充数据表单,用户可以再次提交填写的表单。您可以根据需要更改它,甚至可以在客户端存储必须可能的数据,但主要的想法是使用自定义授权ActionFilter,它在重定向之前存储模型,而不是授权。

答案 1 :(得分:1)

这总是一个问题,并且需要你跳过很多圈来保持这种状态。您始终可以在Session和ViewState中双重存储模型,如果用户来自具有空模型的位置,您可以在Session中查找它。

答案 2 :(得分:1)

我曾经想过但从未尝试过的一件事是在同一页面上将登录提示显示为模式对话框,而不是重定向到单独的登录页面然后重定向回来。登录GUI逻辑通常很简单,您不需要单独的视图。

例如,您可以将登录公开为具有Json消息编码的简单WCF服务,然后使用jQuery从模式对话框中与它进行对话。