当前位置:  开发笔记 > 后端 > 正文

ASP.NET MVC 3中ViewBag.Title的替代方案

如何解决《ASP.NETMVC3中ViewBag.Title的替代方案》经验,为你挑选了2个好方法。

默认情况下,ASP.NET MVC 3的新项目模板将以下内容添加到默认布局(razor中的母版页):

@ViewBag.Title

然后,视图必须包含以下内容以分配页面标题,例如:

@{
     ViewBag.Title = "Log On";
}

也许这只是我自己的偏好,但我发现使用ViewBag来保持标题有点不对(我想的是太多魔术字符串的味道).所以我的问题是:对于使用ASP.NET MVC 3和razor(使用动态属性包)的人来说,这是推荐的最佳实践吗?或者你选择了更强类型的东西(可能涉及自定义基类?)



1> Praveen Pras..:

我不认为asp.net MVC 3附带的默认标题处理功能有什么不好,没关系.

我个人这样做(下面写的)处理标题,我不支持下面的代码或说它比默认功能更好,它只是一个偏好.


    @RenderSection("Title");

视图

@section Title
{
    write title
}

有一点我可以建议改进默认功能

@{
    string pageTitle = @ViewBag.Title ?? "Title Not Set";
}
@pageTitle

因此,每当您忘记在viewbag中添加它时,页面将显示title = Title Not Set

创建基类然后使所有控制器继承自该基类也可以完成.但我认为它带来了太多的痛苦title.



2> Lukáš Novotn..:

标题的ViewBag非常好(我甚至说它是ViewBag的目的) - 动态不是绝对的邪恶."标题"是众所周知的,不太可能改变甚至在视图模板中预定义.我个人使用以下标题:

@(ViewBag.Title == null ? string.Empty : ViewBag.Title + " | ")Site Name

如果您担心ViewBag.Title错误输入,可以通过创建自定义来使其成为强类型,WebViewPage但您仍然必须使用ViewBag或者可能HttpContext.Items在强类型属性中使用,因为WebViewPage在渲染IIRC期间会创建多个实例.

我建议坚持ViewBag,创造自己,WebViewPage因为这似乎有点矫枉过正 - 如果你已经拥有自定义,即使在它上面创建单一属性也WebViewPage只是毫无价值的并发症 - 而且这来自于经常过度工程的人.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有