asp.net-mvc – ViewBag.Title值覆盖ASP.NET MVC编辑器模板的Model.Title

当我将ViewBag.Title设置在Razor模板的顶部时,使用ViewBag.Title的值而不是预期的Model.Title值来填充Model.Title编辑器模板文本框.调用Html.EditorFor(x => Model.Title)显然不会产生这种行为.

如何阻止我的编辑器模板显示ViewBag.Title值,而不保留我的模型的自定义编辑器模板?

@{
    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.

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...