【问题标题】:Displaying error messages from Controller in View在视图中显示来自控制器的错误消息
【发布时间】:2021-01-27 13:58:11
【问题描述】:
我看到很多人说出于安全原因,使用Viewdata 或ViewBag 不是一个好的做法(显示来自控制器的消息)。好像大家都建议ModelState
我的问题是使用 viewdata 显示错误消息有什么问题?如果我们不应该使用ViewData,那么我们应该用它来做什么?
【问题讨论】:
标签:
asp.net-core
.net-core
asp.net-core-mvc
【解决方案1】:
正如@shenku 之前回答的那样,ViewData 和 ModelState 引用完全相同的东西,如果您查看 System.Web.Mvc.Controller 类的代码,您会看到 ModelState 的实现是:
public ModelStateDictionary ModelState
{
get
{
return this.ViewData.ModelState;
}
}
和@JimmiTh 说,
尽管从“最终开发人员”的角度来看,ModelState 的主要用途是在控制器中,但 ViewData 用作在控制器和视图之间通信的所有数据的容器。这就是为什么它还需要包含 ModelState - 因为,虽然您很少直接在视图中使用它,但 ModelState 是例如许多 HtmlHelper 方法实际上在从 POST 操作(而不是模型)呈现视图时默认获取值。