当前位置: 移动技术网 > IT编程>开发语言>.net > asp.net 4.0+ webform程序中集成mvc4

asp.net 4.0+ webform程序中集成mvc4

2017年12月12日  | 移动技术网IT编程  | 我要评论

汇市微言,程立云,高速违章查询网

本文为大家分享了asp.net 4.0+ webform程序中集成mvc4的方法,供大家参考,具体内容如下

1、新建packages.config文件,里面加上必要的程序集 

<?xml version="1.0" encoding="utf-8"?>
<packages>
 <package id="microsoft.aspnet.mvc" version="4.0.20710.0" targetframework="net40" />
 <package id="microsoft.aspnet.mvc.fixeddisplaymodes" version="1.0.0" targetframework="net40" />
 <package id="microsoft.aspnet.mvc.zh-hans" version="4.0.20710.0" targetframework="net40" />
 <package id="microsoft.aspnet.razor" version="2.0.20715.0" targetframework="net40" />
 <package id="microsoft.aspnet.razor.zh-hans" version="2.0.20715.0" targetframework="net40" />
 <package id="microsoft.aspnet.web.optimization" version="1.0.0" targetframework="net40" />
 <package id="microsoft.aspnet.web.optimization.zh-hans" version="1.0.0" targetframework="net40" />
 <package id="microsoft.aspnet.webapi" version="4.0.20710.0" targetframework="net40" />
 <package id="microsoft.aspnet.webapi.client" version="4.0.20710.0" targetframework="net40" />
 <package id="microsoft.aspnet.webapi.client.zh-hans" version="4.0.20710.0" targetframework="net40" />
 <package id="microsoft.aspnet.webapi.core" version="4.0.20710.0" targetframework="net40" />
 <package id="microsoft.aspnet.webapi.core.zh-hans" version="4.0.20710.0" targetframework="net40" />
 <package id="microsoft.aspnet.webapi.webhost" version="4.0.20710.0" targetframework="net40" />
 <package id="microsoft.aspnet.webapi.webhost.zh-hans" version="4.0.20710.0" targetframework="net40" />
 <package id="microsoft.aspnet.webpages" version="2.0.20710.0" targetframework="net40" />
 <package id="microsoft.aspnet.webpages.zh-hans" version="2.0.20710.0" targetframework="net40" />
 <package id="microsoft.net.http" version="2.0.20710.0" targetframework="net40" />
 <package id="microsoft.net.http.zh-hans" version="2.0.20710.0" targetframework="net40" />
 <package id="microsoft.web.infrastructure" version="1.0.0.0" targetframework="net40" />
 <package id="newtonsoft.json" version="4.5.11" targetframework="net40" />
 <package id="webgrease" version="1.1.0" targetframework="net40" />
</packages>

2、在对应web项目中还原包 

update-package -projectname 'web' -reinstall

3、新建app_start目录,在里面加上mvc对应配置代码 

bundleconfig.cs为静态文件压缩的配置代码,参考代码如下: 

 public class bundleconfig
 {
  // 有关 bundling 的详细信息,请访问 http://go.microsoft.com/fwlink/?linkid=254725
  public static void registerbundles(bundlecollection bundles)
  {
   bundles.add(new scriptbundle("~/bundles/jquery").include(
      "~/scripts/jquery-{version}.js"));
   bundles.add(new scriptbundle("~/bundles/common").include("~/js/common*"));
   bundles.add(new scriptbundle("~/bundles/echarts").include("~/js/echarts.common*"));
   bundles.add(new scriptbundle("~/bundles/mustache").include("~/js/mustache*"));
   bundles.add(new scriptbundle("~/bundles/blockui").include("~/js/jquery.blockui*"));


   bundles.add(new stylebundle("~/content/oa/css").include("~/css/oa/style.css"));

   //bundletable.enableoptimizations = true;
  }
 }

routeconfig.cs为路由配置代码,web form相关资源要在此处忽略路由过滤 

 public class routeconfig
 {
  public static void registerroutes(routecollection routes)
  {
   routes.ignoreroute("{resource}.axd/{*pathinfo}");
   //routes.ignoreroute("{resource}.aspx/{*pathinfo}");
   //routes.ignoreroute("{resource}.ashx/{*pathinfo}");

   routes.ignoreroute("{resource}.aspx/{*pathinfo}");
   routes.ignoreroute("{handler}.ashx/{*pathinfo}");
   routes.ignoreroute("handlers/{handler}.aspx/{*pathinfo}");
   routes.ignoreroute("ajaxpro/prototype.ashx");
   routes.ignoreroute("ajaxpro/core.ashx");
   routes.ignoreroute("ajaxpro/converter.ashx");
   routes.ignoreroute("ajaxpro/{resource}.ashx");

   routes.ignoreroute("{resource}.asmx/{*pathinfo}");

   routes.maproute(
    name: "default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "home", action = "index", id = urlparameter.optional }
   );
  }
 }

webapiconfig.cs为webapi的路由配置,参考代码: 

public static class webapiconfig
 {
  public static void register(httpconfiguration config)
  {
   config.routes.maphttproute(
    name: "defaultapi",
    routetemplate: "api/{controller}/{id}",
    defaults: new { id = routeparameter.optional }
   );
  }
 }

4、global文件中application_start事件中加上如下代码,使程序启动mvc配置生效 

 arearegistration.registerallareas();
   globalconfiguration.configuration.formatters.jsonformatter.mediatypemappings.add(new querystringmapping("json", "true", "application/json"));
   webapiconfig.register(globalconfiguration.configuration);
   filterconfig.registerglobalfilters(globalfilters.filters);
   routeconfig.registerroutes(routetable.routes);
   bundleconfig.registerbundles(bundletable.bundles);
   globalconfiguration.configuration.formatters.xmlformatter.supportedmediatypes.clear(); 

5、新建controllers文件夹,在里面加上控制器类,例如 

 public class docreccontroller : controller
 {
  public actionresult index()
  {
   viewbag.username = "wilson.fu";return view();
  }
}

6、新建views文件夹,里面加上对应视图文件,如果需要使用模板,还需增加_viewstart.cshtml 文件,例如docrec/index.cshtml,文件如下 

@{
 layout = null;
}

<!doctype html>

<html>
<head>
 <meta name="viewport" content="width=device-width" />
 <title></title>
</head>
<body>
 <div>
 <h3>
  @viewbag.username
 </h3>
 </div>
</body>
</html>

views文件夹下还需要加上web.config文件进行请求过滤 

<?xml version="1.0" encoding="utf-8"?>

<configuration>
 <configsections>
 <sectiongroup name="system.web.webpages.razor" type="system.web.webpages.razor.configuration.razorwebsectiongroup, system.web.webpages.razor, version=2.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35">
  <section name="host" type="system.web.webpages.razor.configuration.hostsection, system.web.webpages.razor, version=2.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35" requirepermission="false" />
  <section name="pages" type="system.web.webpages.razor.configuration.razorpagessection, system.web.webpages.razor, version=2.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35" requirepermission="false" />
 </sectiongroup>
 </configsections>

 <system.web.webpages.razor>
 <host factorytype="system.web.mvc.mvcwebrazorhostfactory, system.web.mvc, version=4.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35" />
 <pages pagebasetype="system.web.mvc.webviewpage">
  <namespaces>
  <add namespace="system.web.mvc" />
  <add namespace="system.web.mvc.ajax" />
  <add namespace="system.web.mvc.html" />
  <add namespace="system.web.routing" />
  </namespaces>
 </pages>
 </system.web.webpages.razor>

 <appsettings>
 <add key="webpages:enabled" value="false" />
 </appsettings>

 <system.web>
 <httphandlers>
  <add path="*" verb="*" type="system.web.httpnotfoundhandler"/>
 </httphandlers>

 <!--
  在视图页面中启用请求验证将导致验证在
  控制器已对输入进行处理后发生。默认情况下,
  mvc 在控制器处理输入前执行请求验证。
  若要更改此行为,请对控制器或操作
  应用 validateinputattribute。
 -->
 <pages
  validaterequest="false"
  pageparserfiltertype="system.web.mvc.viewtypeparserfilter, system.web.mvc, version=4.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35"
  pagebasetype="system.web.mvc.viewpage, system.web.mvc, version=4.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35"
  usercontrolbasetype="system.web.mvc.viewusercontrol, system.web.mvc, version=4.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35">
  <controls>
  <add assembly="system.web.mvc, version=4.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35" namespace="system.web.mvc" tagprefix="mvc" />
  </controls>
 </pages>
 </system.web>

 <system.webserver>
 <validation validateintegratedmodeconfiguration="false" />

 <handlers>
  <remove name="blockviewhandler"/>
  <add name="blockviewhandler" path="*" verb="*" precondition="integratedmode" type="system.web.httpnotfoundhandler" />
 </handlers>
 </system.webserver>
</configuration>

目录结构如下:

 

编译通过后,访问/docrec/index,即可看到效果:

 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网