当我设置 ViewBag.Title
在 Razor 模板的顶部,Model.Title
使用 ViewBag.Title
的值填充编辑器模板文本框而不是预期的 Model.Title
值(value)。调用Html.EditorFor(x => Model.Title)
明确不会产生这种行为。
如何防止我的编辑器模板显示 ViewBag.Title
没有为我的模型维护自定义编辑器模板的值(value)?
代码
@{
ViewBag.Title = "Edit Post " + Model.Title;
}
@Html.EditorFor(x => Model.Title) @* renders "My Title" text box *@
@Html.EditorFor(x => Model) @* renders "Edit Post My Title" text box *@
最佳答案
Html.EditorFor
使用的值可以来自三个地方:ModelState
, ViewData
和 Model
.顺便说一句,ViewData
和 ViewBag
是同一个东西,两种与同一个底层字典交互的方式。
因此,为避免在处理表单时发生冲突,您可以使用 Model 代替,或使用前缀,如 ViewBag._Title
.
在这种情况下ViewBag.Title
用于与布局共享数据,也可以做Page.Title
无需担心更改 View 数据。
关于asp.net-mvc - ViewBag.Title 值覆盖 ASP.NET MVC 编辑器模板的 Model.Title,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14154590/