微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

原文地址:https://www.jb51.cc/aspnet/250528.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐