我有一个多步骤表单,它使用一个模型对象,我需要在步骤之间保持它。只有在最后一步之后,对象才会保存到数据库中。我见过人们建议使用HTML.Serialize但这个选项有多安全?
此外,我的模型对象将随着用户填写表单而增长,这意味着带有序列化数据的隐藏表单字段将增加我的HTML输出的大小。
这种情况的最佳做法是什么?
答案 0 :(得分:8)
我为此目的使用了TempData。
您可以在TempData中存储对象(模型数据的副本),并在下一个请求中使用它。如果它没有在下一个请求中被设置,它将被“销毁”。所以你不必担心它会填满你的会话。
答案 1 :(得分:0)
将Controller视为状态机,其中每个操作都是向导中的一个步骤。关于步骤之间的持久性并不是什么大不了的,无论如何是一个简单的POCO作为Dto,Command将被发送到你的域接口进行验证和处理。您可以将它存储在IoC,Session,Cache,FileSystem中......我希望你能得到它。保持简单和干净。