在 ASP.NET MVC 项目中使用 WebForm、 HTML

原文地址:http://www.cnblogs.com/snowdream/archive/2009/04/17/winforms-in-mvc.html

ASP.NET MVC和WebForm各有各的优点,我们可能需要同时使用ASP.NET MVC和WebForm。本文介绍了如何在ASP.NET MVC项目中使用WebForm。
首先新建一个名为WebForms的文件夹用于存放WebForm,并添加一个Web窗体文件Demo.aspx作为演示。

Demo.aspx就简单的输出一句话“It’s a WebForm.”
关键步骤在于路由设置。如果你希望WebForms这个文件夹名作为URL的一部分,也就是普通WebForm应用程序的方式来访问这个Demo.aspx,那么只需要简单的忽略这个路由规则即可。
在Global.asax.cs文件的RegisterRoutes方法中加入以下代码

// 忽略对 WebForms 路径的路由
routes.IgnoreRoute("WebForms/{weform}");

结果:

如果希望URL更友好或者不出现WebForms这个文件夹名,那就要自己写一个类继承IRouteHandler。

1public class WebFormsRouteHandler:IRouteHandler
 2{
 3    private string pageName = string.Empty;
 4
 5    public IHttpHandler GetHttpHandler(RequestContext requestContext)
 6    {
 7        // 从URL中获取page参数
 8        pageName = requestContext.RouteData.GetRequiredString("page");
 9
10        // 创建实例
11        // 根据 page 参数拼接成类似/WebForms/page.aspx地址来访问WebForms页面
12        IHttpHandler hander = BuildManager.CreateInstanceFromVirtualPath("/WebForms/" + this.pageName+".aspx", typeof(System.Web.UI.Page)) as IHttpHandler;
13
14        return hander;
15    }
16
17}

然后在Global.asax.cs文件中加上新的路由规则

// 添加一个用WebFormsRouteHandler进行处理的路由
// 其中URL中{page}所占的部分会被在WebFormsRouteHandler中当做参数使用
routes.Add(new Route("web/{page}",new WebFormsRouteHandler()));

当路径匹配web/{page}时用自定义的类来处理这个请求,如web/demo或web/demo1等URL都会匹配到这个路由

示例下载

在 ASP.NET MVC 项目中使用 WebForm、 HTML

时间: 2024-08-26 04:45:47

在 ASP.NET MVC 项目中使用 WebForm、 HTML的相关文章

【转】在 ASP.NET MVC 项目中使用 WebForm

ASP.NET MVC和WebForm各有各的优点,我们可能需要同时使用ASP.NET MVC和WebForm.本文介绍了如何在ASP.NET MVC项目中使用WebForm. 首先新建一个名为WebForms的文件夹用于存放WebForm,并添加一个Web窗体文件Demo.aspx作为演示. Demo.aspx就简单的输出一句话"It's a WebForm." 关键步骤在于路由设置.如果你希望WebForms这个文件夹名作为URL的一部分,也就是普通WebForm应用程序的方式来访

ASP.NET MVC项目中App_Code目录在程序应用

学习ASP.NET MVC,如果你是开发ASP.NET MVC项目的,也许你去为项目添加前ASP.NET项目的APP_Code目录,在这里创建与添加的Class类,也许你无法在MVC项目所引用. 那这样说,是不是一没有作用了呢?非也. 从下面一步一步来学习. 创建一个model,名称:Machine using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Insu

jNs 在 ASP.NET MVC 项目中的应用

最近做项目用到 ASP.NET Web Optimizatoin Framework,发现 Sea.js 的依赖加载在 Release 版本下不能很好的工作了--因为 Web.Optimizatoin 合并了所有脚本.同时由于写惯了 Java 程序和 C# 程序,对于没有命名空间概念的 Sea.js 和 RequireJS 也感觉不爽.考虑了下,觉得模块管理其实并不复杂,所以将之前在<ASP.NET MVC4 捆绑(Bundle)技术下的 JavaScript> 中提到的 js-modular

在ASP.NET MVC项目中使用React

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:最近在开发钉钉的微应用,考虑到性能和UI库的支持,遂采用了React来开发前端. 目前我的项目是基于ABP框架的ASP.NET MVC/WEB API作为后端,AngularJS作为前端.但是发现钉钉官方的UI(SaltUI)是基于React封装的,另外AmazeUI的Touch版本也是React封装,也考虑到React性能更优,同时移动端网页的前端业务逻辑不会太复杂,就打算使用React来开

ASP.NET MVC 项目中 一般处理程序ashx 获取Session

1-在 aspx和aspx.cs中,都是以Session["xxx"]="aaa"和aaa=Session["xxx"].ToString()进行读写. 而在ashx中,Session都要使用context.Session,读写方法是这样的: context.Session["xxx"]="aaa"和aaa=context.Session["xxx"].ToString() 2-在ash

AngularJS2 + ASP.NET MVC项目

环境:VS2015, NodeJS:v 6.5, npm: v3.10, AngularJs 2 通过将ASP.NET MVC项目与Angualr 2官网上的quick start整合的过程中遇到些问题. 通过下面的若干配置最终向项目build成功.

ASP.NET MVC 3中的路由

准备发布新随笔,才发现草稿里还有几年前这篇烂了尾的,先放上来,有空再补完整吧-- (* 整理自<Pro ASP.NET MVC 3 Framework>学习笔记. *) 路由,正如其名,是决定消息经由何处被传递到何处的过程.也正如网络设备路由器Router一样,ASP.NET MVC框架处理请求URL的方式,同样依赖于一张预定义的路由表.以该路由表为转发依据,请求URL最终被传递给特定Controller的特定Action进行处理.而在相反的方向上,MVC框架的渲染器同样要利用这张路由表,生成

在 ASP.NET MVC 应用中使用 NInject 注入 ASMX 类型的 Web Service

这几天,有同学问到为什么在 ASP.NET MVC 应用中,无法在 .ASMX 中使用 NInject 进行注入. 现象 比如,我们定义了一个接口,然后定义了一个实现. public interface IMessageProvider { string GetMessage(); } 定义一个接口的实现. public class NinjectMessageProvider : IMessageProvider { public string GetMessage() { return "T

[转]在 ASP.NET MVC 4 中创建为移动设备优化的视图

原文链接 https://msdn.microsoft.com/zh-cn/magazine/dn296507.aspx 如果深入探讨有关编写移动设备网站的常识性考虑因素,会发现其中有一种内在矛盾. 一方面,客户在其编写应用程序和网站的方法中强烈要求(或乐于要求)移动优先. 另一方面,同一些人又经常称赞 CSS 媒体查询和流体布局. 我所发现的矛盾在于经常利用 CSS 媒体查询和流体布局并未在其他内容之前优先处理移动方面,它不是一种移动优先的方法. 在本文中,我将介绍如何使用服务器端逻辑为给定设