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

标签 asp.net-mvc viewbag mvc-editor-templates editorformodel

当我设置 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 , ViewDataModel .顺便说一句,ViewDataViewBag是同一个东西,两种与同一个底层字典交互的方式。

因此,为避免在处理表单时发生冲突,您可以使用 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/

相关文章:

asp.net - Application_Start 和 Application_OnStart 之间的区别

c# - 发布应用时显示停机页面

asp.net-mvc - 需要时在 CQRS 中提供同步行为?

c# - 清除 ViewBag?

c# - 从 List<int> 填充 EntitySet

asp.net - 从 ViewBag 设置文本输入的值? ASP.NET MVC5

asp.net-mvc - 表单发布后如何保存 ViewBag 数据?

asp.net-mvc - 如何添加和使用 Razor 编辑器模板

asp.net-mvc - ASP.NET MVC 3 中的半复杂 View 模型属性验证