MVC中自定义ViewPage和WebViewPage

时间:2023-03-09 01:43:22
MVC中自定义ViewPage和WebViewPage

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>