ViewPage和WebViewPage的作用就是将Controller中数据返回给页面,一个是针对aspx一个相对cshtml的。代码如下:

 public abstract class WebViewPage<TModel> : System.Web.Mvc.WebViewPage<TModel>
    {
        public string MytestViewPage;

        public override void InitHelpers()
        {
            base.InitHelpers();
            MytestViewPage = "你好这里是ViewPage测试!";
        }

    }

    public abstract class WebViewPage : WebViewPage<dynamic>
    {
    }

    public abstract class ViewPage<TModel> : System.Web.Mvc.ViewPage<TModel>
    {
        public string MytestViewPage;

        public override void InitHelpers()
        {
            base.InitHelpers();
            MytestViewPage = "你好这里是ViewPage测试!";
        }

    }

    public abstract class ViewPage : ViewPage<dynamic>
    {
    }

定义好之后还差一道工序才能在前台页面上使用,将Views下面的Web.config文件中的默认ViewPage和WebViewPage修改成自定义的如下:

 <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="Mv3.ViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="Mv3" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>



 <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="Mv3.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="Mv3" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

对于cshtml已经万事大吉了,可aspx还不行还得修改页面上的ViewPage如下:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<Aqioo.Models.UserModel>" %>

改成


<%@ Page Language="C#" Inherits="Mv3.ViewPage<Aqioo.Models.UserModel>" %>

这样你在ViewPage中定义的数据就可以在前台页面上使用了。如在继承了自定义ViewPage和WebViewPage的页面中使用MytestViewPage(在ViewPage中定义的) 

<div><%=MytestViewPage %></div>

 

posted on 2014-09-12 15:02  随心所意  阅读(957)  评论(0编辑  收藏  举报