asp.net 4.0+ webform程序中集成mvc4_实用技巧

本文为大家分享了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,即可看到效果:

 

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索asp.net
, webform
, mvc4
4.0
,以便于您获取更多的相关知识。

时间: 2025-01-25 09:00:40

asp.net 4.0+ webform程序中集成mvc4_实用技巧的相关文章

一个完整的ASP.NET 2.0 URL重写方案[翻译]_实用技巧

这篇文章描述了一个完整的 ASP.NET 2.0 URL 重写方案.这个方案使用正则表达式来定义重写规则并解决通过虚拟 URLs 访问页面产生回发事件的一些可能的困难. 为什么要重写 URL ? 将 URL 重写方法应用到你的 ASP.Net 应用程序的两个主要原因是:可用性和可维护性. 可用性 谁都知道,相对于难于辨认的带参数的长的查询路径,用户更喜欢一些短的.简洁的 URL.任何时候,一个容易记住和敲入的路径比添加到收藏夹更有用.其次,当一个浏览器的收藏夹不可用时,记住的地址总比在搜索引擎中

ASP.NET Global.asax应用程序文件简介_实用技巧

你可以使用这个文件实现应用程序安全性以及其它一些任务.下面让我们详细看一下如何在应用程序开发工作中使用这个文件. 概述 Global.asax 位于应用程序根目录下.虽然 Visual Studio .NET 会自动插入这个文件到所有的 ASP.NET 项目中,但是它实际上是一个可选文件.删除它不会出问题--当然是在你没有使用它的情况下..asax 文件扩展名指出它是一个应用程序文件,而不是一个使用 aspx 的 ASP.NET 文件. Global.asax 文件被配置为任何(通过 URL 的

asp.net mvc3.0安装失败如何解决_实用技巧

先来看看安装失败的截图 原因分析 因为vs10先安装了sp1补丁,然后安装的mvc3.0,某些文件被sp1补丁更改,导致"VS10-KB2483190-x86.exe"安装不了,造成安装失败. 解决方案 方法1: 解压mvc安装包(AspNetMVC3Setup.exe)找到parameterinfo.xml文件,删除里面"<Exe CanonicalTargetName="VS10-KB2483190-x86".....</Exe>&q

ASP.NET 2.0,C#----图像特效处理_实用技巧

利用.NET 提供的类,如Drawing.Bitmap ,Drawing.Bitmap 等,很容易就可以实现对图片的简单处理.包括打水印,放大缩小,等操作. public partial class WebForm4 : System.Web.UI.Page      {          // 原始图片路径          private string path;          private System.Drawing.Bitmap bitmap;               pri

轻松加密ASP.NET 2.0 Web程序配置信息

asp.net|web|程序|加密 一. 简介 当创建ASP.NET 2.0应用程序时,开发者通常都把敏感的配置信息存储在Web.config文件中.最典型的示例就是数据库连接字符串,但是包括在Web.config文件中的其它敏感信息还包括SMTP服务器连接信息和用户凭证数据,等等.尽管默认情况下可以配置ASP.NET以拒绝所有对扩展名为.config的文件资源的HTTP请求:但是,如果一个黑客能够存取你的web服务器的文件系统的话,那么,Web.config中的敏感信息仍然能够被窃取.例如,也

我在使用VS写asp.net,web应用程序中如何连sql server 接数据库

问题描述 我在使用VS写asp.net,web应用程序中如何连sql server 接数据库 10C 在web程序中我需要连接数据库,使用其中的数据.怎样才能用js与我的sql server2012连接,有没有具体的列子啊!新手求大神解答. 解决方案 用js与数据库连接还是第一次听说,你如果需要执行数据操作是需要后端语言的,Web应用在后台代码中可以用ADO.NET技术来进行数据操作.可以前台js 使用Ajax Post后者Get请求后端接口,后端进行数据库的增删改查.如果是服务器控件直接在事件

“ASP.NET 2.0 正式版中无刷新页面的开发”中示例代码与Firefox兼容的解决

asp.net|解决|示例|刷新|无刷新|页面 这几天正着手开始写毕业设计,因为发生了一些事情,所以一直拖到现在才开始.其实我准备做一个ASP.NET 2.0并且使用AJAX的Web项目,于是到博客园到处寻着AJAX的文章,恰好翻到了Leon.Zhou的ASP.NET 2.0 正式版中无刷新页面的开发按照代码示例和讲解做了一个页面,确实不错啊.因为俺平时几乎都用Firefox,所以就顺手测试了一下Firefox下的效果,结果发现点了Button之后没有反应--于是打开Javascript控制台,

非常非常重要的的问题(在ASP.NET中和vsC#应用程序中的各个控件的属性都有数据这一项;这一项怎么用呀???)

问题描述 在ASP.NET中和vsC#应用程序中的各个控件的属性都有属性数据这一项:这一项怎么用呀???)帮帮忙呀 解决方案 解决方案二:对控件的设置或数据绑定解决方案三:数据绑定后可以简单使用或定制使用数据解决方案四:数据捆定解决方案五:做数据绑定用.解决方案六:数据绑定,通常用来指定数据表的某一列,或者对象数据集里的某个属性.

在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出_实用技巧

但是,系统日志中可能会记录类似于以下内容的事件消息: 事件类型:警告 事件来源:W3SVC 事件类别:无 事件 ID: 1009 日期: 9/28/2005 时间:3:18:11 PM 用户:N/A 计算机:IIS-SERVER 描述: 为应用程序池"DefaultAppPool"提供服务的进程意外终止.进程 ID 是"2548".进程退出代码是"0xe0434f4d". 而且,应用程序日志中可能会记录类似于以下内容的事件消息: 事件类型:错误