维持可视数据用之间的RenderAction电话
-
05-07-2019 - |
题
我是呈现一个共同登录的形式使用Html。RenderAction,在每一页上我的网站。
如果用户进入他们的详细资料纳入文本框和点击次数"提交",它不会一个职位,一个控制器,用于处理登录。
如果他们犯了一个错误,例如进入一个无效的电子邮件地址,这将填充ModelState用错误消息,然后重新定向后的任何网页上。
问题是,因为RenderAction发生的作为一个单独的请求,我失去的模型.
甚至当我把它放到TempData它丢失,因为TempData是冲入在每个单独的请求。
有没有办法保护的数据之间的连续Html。RenderAction的电话?
如果不是,任何建议,我怎么能破解这个?(应该把数据在会议?)
解决方案
这是我做了什么。(这可能不是最理想的解决方案。)
我创建了一个'PreserveViewDataAttribute',这是我把任何行动对我希望保留可视数据用在本届会议。
在我BaseController,我忽略了'重新定向的方法与我自己的方法,并以下。
得到一个参考的行动方法,把它称为(一点反映在这里)
检查如果这种方法具有'PreserveViewDataAttribute'定义上它
如果是这样,副本目前可视数据用于一个会议变量。(标签的变量是相同的,因为目前行动的名称,'_ViewData'上涨到最后。)
在任何一种情况下,呼叫基地重新定向的方法。
然后我创建了一个财产在BaseController称为'PreservedViewData',返回的可视数据用于会议有关的当前行动。(或返回null如果没有找到).
因此,保留可视数据用只要我想,我只要装饰我的行动与'PreserveViewDataAttribute',然后叫'PreservedViewData'每当我需要它。
让我知道如果你想的源码。
其他提示
你可能会喜欢这个后重定-得到部分的做法,由卡齐*拉希德.
http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx#prg