所以我一直在谷歌上搜索如何删除ViewBags的任何和所有用法,以支持更优雅和有效的东西。不幸的是,我遇到的几乎所有信息都是针对MVC的早期版本,我还没有找到既有效又有效的东西。
我的主要目标之一是能够同时填充页面和布局,以便我可以为<h2>
和<title>
添加页面标题。如果需要的话,我还希望能够提供正文内容的第一段(从数据库中作为单独的列提取)到元描述(这是一个特殊情况,其中所有第一段都是他们自己的db中行中的单独条目,纯粹是为了充当元描述的目的)。
我有run across something that I believe will meet my needs,但我似乎无法正确实现第五个代码块:
现在创建视图基类。您需要创建两个版本 支持打字视图。
public class ViewBaseWithLayoutModel : WebViewPage{ public LayoutViewModel LayoutModel { get { return (LayoutViewModel)ViewBag.LayoutModel; } } } public class ViewBaseWithLayoutModel<T> : WebViewPage<T>{ public LayoutViewModel LayoutModel { get { return (LayoutViewModel)ViewBag.LayoutModel; } } }
具体来说,它是“创建视图基类”让我把它绑在一起 - 他们是在谈论项目中一个全新的部分,类似于视图,控制器,模型,扩展,验证器等。,这样命名空间就是namespace Project.ViewBase {
?
如果我可以将第五个代码块直接放在另一个控制器上,比如BaseController(在Project.Controllers
命名空间内但在该文件中的BaseController类下面),为什么这两个类都会抛出错误,
'ViewBaseWithLayoutModel' does not implement inherited abstract member 'WebPageExecutingBase.Execute()'
同样,第六个代码块引用
<pages pageBaseType="Namespace.To.ViewBaseWithLayoutModel">
所以在上面的例子中它会是'Project.Controllers.ViewBaseWithLayout'吗?
非常感谢任何帮助。