3 回答
TA贡献1850条经验 获得超11个赞
请记住,TempData在会话中存储表单集合。如果您不喜欢这种行为,则可以实现新的ITempDataProvider接口,并使用其他某种机制来存储临时数据。除非您知道一个事实(通过测量和分析),否则使用Session状态会伤害您,否则我不会这样做。
TA贡献1898条经验 获得超8个赞
还有另一种避免使用tempdata的方法。我喜欢的模式涉及为无效表单的原始渲染和重新渲染创建1个动作。它是这样的:
var form = new FooForm();
if (request.UrlReferrer == request.Url)
{
// Fill form with previous request's data
}
if (Request.IsPost())
{
if (!form.IsValid)
{
ViewData["ValidationErrors"] = ...
} else {
// update model
model.something = foo.something;
// handoff to post update action
return RedirectToAction("ModelUpdated", ... etc);
}
}
// By default render 1 view until form is a valid post
ViewData["Form"] = form;
return View();
这或多或少是这种模式。有点假。使用此方法,您可以创建1个视图来处理呈现表单,重新显示值(因为表单将填充先前的值)并显示错误消息。
当发布到该动作时,如果有效,它将控制权转移到另一个动作。
当我们建立对MVC的支持时,我正在尝试在.net验证框架中简化此模式。
- 3 回答
- 0 关注
- 1070 浏览
添加回答
举报