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

什么是ASP.NET MVC3中Razor View的基类

如何解决《什么是ASP.NETMVC3中RazorView的基类》经验,为你挑选了1个好方法。

我试图让我的所有视图继承自定义类,以便我可以向所有页面添加某些行为和值,但我遇到了一些问题.我尝试了继承System.Web.Mvc.WebViewPage的子类,但是我被迫实现了一个我不知道应该做什么的Execute过程.此外,如果我尝试访问Context变量,我得到一个空引用(真的很奇怪).这让我觉得我可能有错误的基类......

有什么想法吗?



1> marcind..:

迭代,System.Web.Mvc.WebViewPage是正确的基类型(System.Web.Mvc.WebViewPage如果你想要强类型视图,你应该有另一个继承的类).您应该将自己的类标记abstract为不强制执行Execute方法.

更新:要配置所有视图以使用自定义基类,请查看该~\Views\Web.config文件.在其中有一个特定于Razor的部分,您可以使用该pageBaseType属性配置自定义类型.

就Context属性而言,一旦执行视图就应该完全初始化它.但是,如果您尝试过早访问它(例如,从类构造函数中),它可能不可用.你什么时候试图访问它?


编译视图时,Razor编译器会提供Execute方法.例如,给定以下视图文件

Hello @Name!

Razor编译器将在幕后生成以下类(这是一个简化,所以细节可能会关闭,但它应该传达点)

public class _Some_Generated_Class_Name_ : System.Web.Mvc.WebViewPage {
  public void Execute() {
    Write("Hello ");
    Write(Name);
    Write("!");
  }
}

然后框架在您的视图类上调用Execute方法,并执行您的视图.

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