本文为大家分享了asp.net 4.0+ webform程序中集成mvc4的方法,供大家参考,具体内容如下
1、新建packages.config文件,里面加上必要的程序集
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<? 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为静态文件压缩的配置代码,参考代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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相关资源要在此处忽略路由过滤
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
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的路由配置,参考代码:
1
2
3
4
5
6
7
8
9
10
11
|
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配置生效
1
2
3
4
5
6
7
|
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文件夹,在里面加上控制器类,例如
1
2
3
4
5
6
7
|
public class DocRecController : Controller { public ActionResult Index() { ViewBag.UserName = "wilson.fu" ; return View(); } } |
6、新建Views文件夹,里面加上对应视图文件,如果需要使用模板,还需增加_ViewStart.cshtml 文件,例如DocRec/Index.cshtml,文件如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
@{ 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文件进行请求过滤
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<? 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,即可看到效果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。