我是呈现一个共同登录的形式使用Html。RenderAction,在每一页上我的网站。

如果用户进入他们的详细资料纳入文本框和点击次数"提交",它不会一个职位,一个控制器,用于处理登录。

如果他们犯了一个错误,例如进入一个无效的电子邮件地址,这将填充ModelState用错误消息,然后重新定向后的任何网页上。

问题是,因为RenderAction发生的作为一个单独的请求,我失去的模型.

甚至当我把它放到TempData它丢失,因为TempData是冲入在每个单独的请求。

有没有办法保护的数据之间的连续Html。RenderAction的电话?

如果不是,任何建议,我怎么能破解这个?(应该把数据在会议?)

有帮助吗?

解决方案

这是我做了什么。(这可能不是最理想的解决方案。)

我创建了一个'PreserveViewDataAttribute',这是我把任何行动对我希望保留可视数据用在本届会议。

在我BaseController,我忽略了'重新定向的方法与我自己的方法,并以下。

  1. 得到一个参考的行动方法,把它称为(一点反映在这里)

  2. 检查如果这种方法具有'PreserveViewDataAttribute'定义上它

  3. 如果是这样,副本目前可视数据用于一个会议变量。(标签的变量是相同的,因为目前行动的名称,'_ViewData'上涨到最后。)

  4. 在任何一种情况下,呼叫基地重新定向的方法。

然后我创建了一个财产在BaseController称为'PreservedViewData',返回的可视数据用于会议有关的当前行动。(或返回null如果没有找到).

因此,保留可视数据用只要我想,我只要装饰我的行动与'PreserveViewDataAttribute',然后叫'PreservedViewData'每当我需要它。

让我知道如果你想的源码。

其他提示

你可能会喜欢这个后重定-得到部分的做法,由卡齐*拉希德.

http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx#prg

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top