希望避免在MVC 5中使用ViewBag - 建议?

时间:2016-04-27 22:46:17

标签: asp.net asp.net-mvc asp.net-mvc-5

所以我一直在谷歌上搜索如何删除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'吗?

非常感谢任何帮助。

0 个答案:

没有答案