返璞归真 asp.net mvc (13) - asp.net mvc 5.0 新特性

时间:2022-09-17 13:26:17

[索引页]
[源码下载]

返璞归真 asp.net mvc (13) - asp.net mvc 5.0 新特性

作者:webabcd

介绍
asp.net mvc 之 asp.net mvc 5.0 新特性

  • MVC5, WebAPI2(Attribute Routing, Cross Origin Request Sharing, OData), SignalR, SPA(Single Page Application)

示例
1、简介 MVC5 的新特性
MVC50/Index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>返璞归真 asp.net mvc - asp.net mvc 5.0 新特性</title>
</head>
<body>
<h2>返璞归真 asp.net mvc - asp.net mvc 5.0 新特性 之 MVC5</h2> <p>
现在可以继承 System.Web.Http.AuthorizeAttribute, ExceptionFilterAttribute 了
</p> <p>
内置支持 oauth 到一些知名网站,代码参见 App_Start/Startup.Auth.cs;效果参见 http://localhost:26659(进去后点击登录)
</p>
</body>
</html>

MVC50/App_Start/Startup.Auth.cs

using Microsoft.AspNet.Identity;
using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies;
using Owin; namespace MVC50
{
public partial class Startup
{
// 有关配置身份验证的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=301864
public void ConfigureAuth(IAppBuilder app)
{
// 使应用程序可以使用 Cookie 来存储已登录用户的信息
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
// Use a cookie to temporarily store information about a user logging in with a third party login provider
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); // 取消注释以下行可允许使用第三方登录提供程序登录
//app.UseMicrosoftAccountAuthentication(
// clientId: "",
// clientSecret: ""); //app.UseTwitterAuthentication(
// consumerKey: "",
// consumerSecret: ""); //app.UseFacebookAuthentication(
// appId: "",
// appSecret: ""); // 支持使用 google 账户登录
app.UseGoogleAuthentication();
}
}
}

2、简介 WebAPI2 的新特性
WebAPI2/Index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>返璞归真 asp.net mvc - asp.net mvc 5.0 新特性</title>
</head>
<body>
<h2>返璞归真 asp.net mvc - asp.net mvc 5.0 新特性 之 WebAPI2</h2> <p>
<a href="AttributeRouting.html" target="_blank">WebAPI2 - Attribute Routing</a>
</p> <p>
<a href="CORS.html" target="_blank">WebAPI2 - Cross Origin Request Sharing</a>
</p> <p>
<a href="OData.html" target="_blank">WebAPI2 - OData</a>
</p>
</body>
</html>

2.1 演示 WebAPI2 - Attribute Routing
WebAPI2/Controllers/AttributeRoutingController.cs

/*
* 用于演示 Attribute Routing 特性
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http; namespace WebAPI2.Controllers
{
public class AttributeRoutingController : ApiController
{
// 经典路由方式(路由配置来自 RouteConfig)
// http://localhost:26700/api/AttributeRouting?name=webabcd
public string Get(string name)
{
string result = "Hello: " + name + " (经典路由)"; return result;
} // Attribute Routing 路由方式,让 Action 可以有自己自定义的路由方式
// http://localhost:26700/hello/webabcd
[Route("hello/{name}")]
public string Get2(string name)
{
string result = "Hello: " + name + " (Attribute Routing)"; return result;
}
}
}

WebAPI2/AttributeRouting.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script src="Scripts/jquery-1.10.2.js"></script>
<title>Attribute Routing</title>
</head>
<body>
<script type="text/javascript"> // 调用经典路由方式的 api
var result = $.get("http://localhost:26700/api/AttributeRouting?name=webabcd", function (msg) {
alert(msg);
}); // 调用 Attribute Routing 路由方式的 api
var result = $.get("http://localhost:26700/hello/webabcd", function (msg) {
alert(msg);
}); </script>
</body>
</html>

2.2 演示 WebAPI2 - Cross Origin Request Sharing
WebAPI2/Controllers/CORSController.cs

/*
* 演示 web api 对 cors(Cross Origin Resource Sharing) 的支持
*
* 注:请先行参见 WebApiConfig.cs
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http; namespace WebAPI2.Controllers
{
public class CORSController : ApiController
{
public string Get()
{
return "Hello: Cross Origin Resource Sharing";
}
}
}

WebAPI2/App_Start/WebApiConfig.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http; namespace WebAPI2
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services // Web API routes
config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
); // nuget 中搜索 ASP.NET Cross-Origin Support,然后安装
// 使本 api 支持 cors
var cors = new System.Web.Http.Cors.EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors); // nuget 中搜索 ASP.NET Web API OData
// 使本 api 支持 odata 查询
config.EnableQuerySupport();
}
}
}

WebAPI2/CORS.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="Scripts/jquery-1.10.2.js"></script>
<title>Cross Origin Request Sharing</title>
</head>
<body>
<script type="text/javascript"> if (jQuery.support.cors) {
jQuery.support.cors = true;
var result = $.get("http://localhost:26700/api/cors", function (msg) {
alert(msg);
});
}
else {
alert("浏览器不支持 cors");
} /*
* cors:全称 Cross Origin Resource Sharing,用于支持 ajax 跨域调用,支持此协议的的浏览器有 Internet Explorer 8+,Firefox 3.5+,Safari 4+ 和 Chrome 等
*
* 测试场景:要把客户端与服务端配置为不同的域名
*
* 本例可以通过 ajax 跨域调用 api/cors 接口,会发现如下效果
* 1、请求头中会出现 Origin: http://xxx.com.cn (此域名为 host 此客户端的域名)
* 2、响应头中会出现 Access-Control-Allow-Origin: *
*
* 另:关于 cors 协议的更多详细内容网上搜一下即可
*/ </script>
</body>
</html>

2.3 演示 WebAPI2 - OData
WebAPI2/Controllers/ODataController.cs

/*
* 演示如何让 web api 支持 odata 协议
*
* 注:请先行参见 WebApiConfig.cs
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.OData.Query; namespace WebAPI2.Controllers
{
public class ODataController : ApiController
{
// 有很多 attribute 可以设置,以下仅举 2 例,更多详细内容参见文档
// [Queryable(AllowedQueryOptions = AllowedQueryOptions.Skip | AllowedQueryOptions.Top)] // 仅支持 skip 查询和 top 查询
// [Queryable(MaxTop = 100)] // 指定 top 参数的最大值为 100 public IQueryable Get()
{
List<Product> products = new List<Product>(); Random random = new Random();
for (int i = ; i < ; i++)
{
Product product = new Product();
product.ProductId = i;
product.Name = i.ToString().PadLeft(, '');
product.Price = random.Next(, ); products.Add(product);
} return products.AsQueryable();
}
} public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public int Price { get; set; }
}
}

WebAPI2/App_Start/WebApiConfig.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http; namespace WebAPI2
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services // Web API routes
config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
); // nuget 中搜索 ASP.NET Cross-Origin Support,然后安装
// 使本 api 支持 cors
var cors = new System.Web.Http.Cors.EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors); // nuget 中搜索 ASP.NET Web API OData
// 使本 api 支持 odata 查询
config.EnableQuerySupport();
}
}
}

WebAPI2/OData.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script src="Scripts/jquery-1.10.2.js"></script>
<title>OData</title>
</head>
<body>
<script type="text/javascript"> var result = $.get("http://localhost:26700/api/odata?$top=2", function (msg) {
alert(msg[0].ProductId);
}); var result = $.get("http://localhost:26700/api/odata?$filter=ProductId eq 100", function (msg) {
alert(msg[0].ProductId);
}); // $select 就是 WebAPI2 中新增的查询参数之一
var result = $.get("http://localhost:26700/api/odata?$filter=ProductId eq 100&$select=Name", function (msg) {
alert(msg[0].ProductId);
alert(msg[0].Name);
}); </script>
</body>
</html>

3、简介 SignalR 的特性
SignalR/Index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>实时通信 - SignalR</title>
</head>
<body>
<h2>实时通信 - SignalR</h2> <p>
SignalR(可以在 nuget 中安装),支持 ajax 长轮询和 WebSocket,更多内容参见:http://www.asp.net/signalr
</p>
</body>
</html>

4、简介 SPA(Single Page Application) 的特性
SPA/Index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>返璞归真 asp.net mvc - asp.net mvc 5.0 新特性</title>
</head>
<body>
<h2>返璞归真 asp.net mvc - asp.net mvc 5.0 新特性 之 SPA(Single Page Application)</h2> <p>
knockout.js - 用于支持 MVVM 模式,有效实现 js 和 html 的分离
</p> <p>
modernizr.js - 用来检测浏览器功能支持情况的 JavaScript 库
</p> <p>
respond.js - 目标是使得那些不支持 CSS3 Media Queryes 特性的浏览器能够支持
</p>
</body>
</html>

OK
[源码下载]

返璞归真 asp.net mvc (13) - asp.net mvc 5.0 新特性的更多相关文章

  1. 返璞归真 asp&period;net mvc &lpar;6&rpar; - asp&period;net mvc 2&period;0 新特性

    原文:返璞归真 asp.net mvc (6) - asp.net mvc 2.0 新特性 [索引页][源码下载] 返璞归真 asp.net mvc (6) - asp.net mvc 2.0 新特性 ...

  2. 返璞归真 asp&period;net mvc &lpar;7&rpar; - asp&period;net mvc 3&period;0 新特性之 Controller

    原文:返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller [索引页][源码下载] 返璞归真 asp.net mvc (7) - asp.net ...

  3. 返璞归真 asp&period;net mvc &lpar;8&rpar; - asp&period;net mvc 3&period;0 新特性之 Model

    原文:返璞归真 asp.net mvc (8) - asp.net mvc 3.0 新特性之 Model [索引页][源码下载] 返璞归真 asp.net mvc (8) - asp.net mvc ...

  4. 返璞归真 asp&period;net mvc &lpar;12&rpar; - asp&period;net mvc 4&period;0 新特性之移动特性

    原文:返璞归真 asp.net mvc (12) - asp.net mvc 4.0 新特性之移动特性 [索引页][源码下载] 返璞归真 asp.net mvc (12) - asp.net mvc ...

  5. 返璞归真 asp&period;net mvc &lpar;11&rpar; - asp&period;net mvc 4&period;0 新特性之自宿主 Web API&comma; 在 WebForm 中提供 Web API&comma; 通过 Web API 上传文件&comma; &period;net 4&period;5 带来的更方便的异步操作

    原文:返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, ...

  6. 返璞归真 asp&period;net mvc &lpar;9&rpar; - asp&period;net mvc 3&period;0 新特性之 View&lpar;Razor&rpar;

    原文:返璞归真 asp.net mvc (9) - asp.net mvc 3.0 新特性之 View(Razor) [索引页][源码下载] 返璞归真 asp.net mvc (9) - asp.ne ...

  7. 返璞归真 asp&period;net mvc &lpar;10&rpar; - asp&period;net mvc 4&period;0 新特性之 Web API

    原文:返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API [索引页][源码下载] 返璞归真 asp.net mvc (10) - asp.net ...

  8. asp&period;net mvc 4&period;0 新特性之移动特性

    asp.net mvc 4.0 新特性之移动特性 为不同的客户端提供不同的视图 手动重写 UserAgent,从而强制使用对应的视图 示例1.演示如何为不同的客户端提供不同的视图Global.asax ...

  9. ASP&period;NET4&period;0新特性

    原文:ASP.NET4.0新特性 在以前试用VS2010的时候已经关注到它在Web开发支持上的一些变化了,为此我还专门做了一个ppt,当初是计划在4月12日那天讲的,结果因为莫名其妙的原因导致没有语音 ...

随机推荐

  1. django 第三天 有关pip使用

    软件应用开发的经典模型有这样几个环境:开发环境(development).集成环境(integration).测试环境(testing).QA验证,模拟环境(staging).生产环境(product ...

  2. &period;Net语言 APP开发平台——Smobiler学习日志:实现手机上常见的ListMenuView

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的"S ...

  3. poj-3264-Balanced Lineup

    poj   3264  Balanced Lineup link: http://poj.org/problem?id=3264 Balanced Lineup Time Limit: 5000MS ...

  4. &lbrack;Java Basics3&rsqb; XML&comma; Unit testing

    What's the difference between DOM and SAX? DOM creates tree-like representation of the XML document ...

  5. mysqldump备份7

    http://www.cnblogs.com/ivictor/p/5505307.html   对于MySQL的备份,可分为以下两种: 1. 冷备 2. 热备 其中,冷备,顾名思义,就是将数据库关掉, ...

  6. linux中硬盘及网卡的表示方法

    Linux中的所有设备均表示为/dev下的一个文件,各种IDE设备分配一个由hd前缀组成的文件:而对于各种SCSI设备,则分配了一个由sd前缀组成的文件,例如: IDE0接口上的主盘成为/dev/hd ...

  7. 解决tomcat占用8080端口

    怎么解决tomcat占用8080端口问题图文教程           怎么解决tomcat占用8080端口问题 相信很多朋友都遇到过这样的问题吧,tomcat死机了,重启eclipse之后,发现 Se ...

  8. HDU 1540 POJ 2892 Tunnel Warfare

    线段树 区间合并 单点修改 区间查询.又是1秒钟构思,差错查了好久... ... 发现一个int型的定义成了char型,打脸. #include <stdio.h> #include &l ...

  9. MySQL对sum&lpar;&rpar;字段 进行条件筛选,使用having,不能用where

    显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区. SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY reg ...

  10. Future与Promise

    https://code.csdn.NET/DOC_Scala/chinese_scala_offical_document/file/Futures-and-Promises-cn.md#ancho ...