对于一个需要支持多语言的Web应用,一个很常见的使用方式就是通过请求地址来控制界面呈现所基于的语言文化,比如我们在表示请求地址的URL中将上语言文化代码(比如en或者en-US)来指导服务器应该采用怎样的语言来显示界面的内容...对于一个ASP.NET MVC应用来说,我们很容易通过URL路由来实现这样一个功能。[本文已经同步到《How ASP.NET MVC Works?》...中] 在具体介绍实现之前,我们通过一个简单的例子谈谈最终实现的效果。...在通过ASP.NET MVC项目模板创建的空Web应用中,我们创建了如下一个HomeController,默认的Action方法Index用于呈现一个登录View。...实际上针对URL路由的本地化可以通过具有如下定义的名为CultureAwareHttpModule的自定义HttpModule来实现。
在网络访问过程中,使用代理服务器是一种常见的方式来实现网络数据的转发和访问控制。而对于Java开发者来说,如何在Java程序中通过代理实现对HTTP2网站的高速访问是一个具有挑战性的问题。...本文将以隧道代理的使用为案例,介绍如何在Java中通过代理实现对HTTP2网站的高速访问,并附带实现代码过程。什么是HTTP2协议?...由于HTTP2的这些特性,使得对HTTP2网站的访问速度更快、更高效。...Java中的HTTP2支持Java自带的网络库java.net并不直接支持HTTP2协议,但可以通过第三方库来实现HTTP2的支持。...其中,最流行的是Alpn-boot库,它可以在Java中启用对HTTP2的支持。使用隧道代理实现对HTTP2网站的高速访问在Java中,可以使用隧道代理来实现对HTTP2网站的高速访问。
如果将表示代码和业务逻辑组合在单个对象中,则每次更改用户界面时都必须修改包含业务逻辑的对象。 这常常会引发错误,并且需要在每次进行细微的用户界面更改后重新测试业务逻辑。...在 MVC 模式中,控制器是初始入口点,负责选择要使用的模型类型和要呈现的视图(因此得名 - 它控制应用如何响应给定请求)。 备注 控制器不应由于责任过多而变得过于复杂。...它可让你定义适用于搜索引擎优化 (SEO) 和链接生成的应用程序 URL 命名模式,而不考虑如何组织 Web 服务器上的文件。可以使用支持路由值约束、默认值和可选值的方便路由模板语法来定义路由。...通过基于约定的路由,可以全局定义应用程序接受的 URL 格式以及每个格式映射到给定控制器上特定操作方法的方式。...; 借助属性路由,可以通过用定义应用程序路由的属性修饰控制器和操作来指定路由信息。 这意味着路由定义位于与之相关联的控制器和操作旁。
在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据从控制器传递给视图。控制器类将响应请求来的URL。...您可以把视图模板需要的动态数据 (参数)在控制器中放入到一个ViewBag对象中,然后视图模板可以访问这个对象。...ASP.NET MVC model binding system 会自动将地址栏中URL里的 query string映射到您方法中的参数(name 和numTimes)。...name=Scott&numtimes=4 现在,模型绑定(model binder) 使得数据从URL传递给控制器。控制器将数据装入到ViewBag对象中,通过该对象传递给视图。...让我们来创建一个电影数据库吧。 学习了本节内容,才能更好的理解数据是如何从控制器传递到视图显示的。在掌握这些MVC知识的同时,也可以借助一些开发工具来帮助开发过程。
在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法。 查询Details和Delete方法 打开Movie控制器并查看Details方法。...请求方法中,GET请求有三个URL段,Movies控制器,Details方法和ID值。...Code First 使得您可以轻松的使用Find方法来搜索数据。一个重要的安全功能内置到了方法中。方法首先验证Find方法已经找到了一部电影,然后再执行其它代码。...下一步 在您构建和测试一个Web应用程序之后,下一步就是将其提供给其他人,以使得通过互联网访问。要做到这一点,你需要将它部署到一个Web主机。...ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 7. ASP.NET MVC 5 - 从控制器访问数据模型 8.
这样做的主要问题是静态 API 描述将客户端与服务器紧密关联。简而言之,它阻止了可演变性,因为 API 描述中的任何更改都可能中断所有现有客户端。...您可以通过定义表示超媒体的方式来利用这些媒体类型,但是这要求客户端了解超媒体语义在其上是如何定义的。...现在我们来了解一下如何在使用 ASP.NET Web API 的生产环境中实际实施这些原理,并使用此框架提供的所有可扩展性和功能。 在内核级别,ASP.NET Web API 支持格式化程序的概念。...格式化程序实现形式知道如何处理特定媒体类型,以及如何将它序列化或反序列化为具体的 .NET 类型。过去在 ASP.NET MVC 中对新媒体类型的支持十分有限。...通过 Url 属性在 ApiController 基类中提供此类的实例,因此可以在任何控制器方法中轻松使用它。
为限制控制器只能执行HTTPS,使用RequireHttpsAttribute 2 授权 对账户的权限的控制可以通过在控制器或控制器操作上加AuthorizeAttribute 属性。...AuthorizeCore,HandleUnauthorizedRequest,OnAuthorization,那么在执行授权动作的过程中他们是如何被调用的呢?...防御方法: 1)使用Razor语法输出的内容已经被编码,可以不做任何其他处理 例如: @Model.Field 2)大部分的XSS攻击可通过对输入内容进行编码来阻止:Html.Encode...) ASP.NET 4.5 集成Anti-XSS Library,可以通过配置来对整个网站的输出进行编码。...,每次刷新页面时隐藏栏位的值都不同,每次执行控制器操作前,都会验证隐藏栏位和浏览器cookie中的值是否相同,只有相同才允许执行控制器操作。
ASP.NET MVC 的验证错误UI 重新运行应用程序,浏览 /Movies的 URL。 单击Create New链接,来添加一部新电影。在窗体中填写一些无效值,然后单击Create按钮。...一个真正的好处是,你并不需要更改MoviesController类或Create.cshtml视图中的一行代码,来启用此验证的用户界面。...如何验证创建视图和创建方法 您可能很想知道验证用户界面在没有更新控制器或视图代码的情况下是如何生成的。下面列出了MovieController类中的Create方法。...此Helper旁边是对Html.ValidationMessageFor方法的调用。这两个Helper方法将处理由控制器传递到视图的模型对象(在这里是,Movie对象)。...ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 7. ASP.NET MVC 5 - 从控制器访问数据模型 8.
每一个请求都会经过控制器处理,控制器中的每个方法被称为控制器操作,它处理具体的请求。 1操作输入参数 控制器的操作的输入参数可以是内置类型也可以是自定义类型。...Roles:获取或设置有权访问控制器或操作方法的用户角色。...Users:获取或设置有权访问控制器或操作方法的用户。...,不会路由到此控制器方法 5向视图传递数据 与其说传递数据,倒不如说视图如何获得控制器处理过的数据。...原理: ASP.NET从线程池获得线程处理异步请求,异步调用完后,该线程回到线程池以便可以处理其他请求,同时通知ASP.NET重新抓取一个线程(不一定是处理异步请求的线程)来完成具体的异步操作(输出数据等
禁止行为: 通过调用 Task.Wait 或 Task.Result 阻止异步执行。 获取常见代码路径中的锁。当构建为并行运行代码时,ASP.NET Core 应用的性能最高。...如果有异步 API 可用,则异步调用数据访问、I/O 和长时间运行的操作 API。 不要使用 来异步同步 API。 使控制器/Razor Page 操作成为异步。...可以通过在 PerfView 中查看垃圾回收 (GC) 统计信息并检查以下内容来诊断内存问题(如前面的问题): 垃圾回收暂停时间。 花费在垃圾回收上的处理器时间百分比。...10在HTTP请求外部完成长时间运行任务 对 ASP.NET Core 应用进行的大多数请求可以由调用必要服务并返回 HTTP 响应的控制器或页面模型进行处理。...初始加载请求的性能可以通过以下方式得到提高: 捆绑,即将多个文件合并为一个文件。 缩小,即通过删除空格和注释来减小文件的大小。
现在, 让我们使用Empty项目模板来创建一个ASP.NET Core应用程序, 然后了解如何添加wwwroot文件夹。...在早期的ASP.NET应用程序中,可以从项目根文件夹或它下面的任何其他文件夹提供静态文件。 但这已在ASP.NET Core中更改。...现在,只能通过HTTP请求为webroot – wwwroot文件夹或其下的任何子文件夹中的文件提供服务。 其他所有文件均被阻止,默认情况下无法提供。 但是,如果您愿意,还可以更改此默认行为。...例如,您可以通过https:// localhost: /js/site.js访问js文件夹中的上述site.js文件。...如何设置默认页面? 大多数Web应用程序都有一个默认页面,例如index.html或default.html作为启动页面,因为它很容易记住。 当用户访问该应用程序的根URL时,将显示该网页。
这是通过减少对服务器的请求数量和减小请求规模,来实现缩短请求负载时间的(如 CSS 和 JavaScript)。压缩技术通过复杂的代码逻辑也使得别人更难的侵入你的 JavaScript 代码。...因为我想使用 ASP.NET 的捆绑来加载所有的 AngularJS 控制器。一旦开始索引,一个 ASP.NET 捆绑中的巨大的挑战将会出现在服务器端。...幸运的是,你可以通过编辑视图文件下的 web.config 文件并添加一个 HTML 和 JavaScript 的处理器来更改此约定,这将会使这些文件类型能够被送达至浏览器进行解析。 通过注册方法来实现控制器注册。...通过第一部分内容的学习,相信大家已经对实现在 ASP.NET MVC 中集成 AngularJS 的基本思路有所了解。
“upsert”操作阻止错误的发生,如果你尝试插入一个已经存在的行,它覆盖任何数据更改,当你在测试应用程序的同时。...显式修改现有数据库的架构,以便它匹配的模型类。这种方法的优点是,你保持你的数据。可以使手动或通过建立数据库更改脚本实现它。 3....在本节中,您看到了如何修改模型对象并始终保持其和数据库Schema的同步。您还学习了使用填充示例数据来创建新数据库的例子,您可以反复尝试。...接下来,让我们看看如何将丰富的验证逻辑添加到模型类,并对模型类执行一些强制的业务规则验证。相信有了本节如何修改模型对象并始终保持其和数据库Schema同步的内容介绍,大家会对MVC的理解又加深一步。...ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 7. ASP.NET MVC 5 - 从控制器访问数据模型 8.
这只是ASP.NET MVC不同于ASP.NET Web Forms众多不同中的一个方面。接下来我们看看如何通过使用一个HTTP处理程序来模拟ASP.NET MVC行为。...注:在软件中,专业术语URI(Uniform Resource Identifier)是用于通过位置或名称来引用的资源。...当URI通过位置来标识资源时,就是URL(Uniform Resource Locator)。当URI通过名称标识资源时,就变成了URN(Uniform Resource Name)。...然而,他不能阻止我们使用请求处理程序最为抽象工厂,增加一个或多个简介层。事实上,我们可以使用请求处理程序中的请求信息,来确定外部的实际服务请求。...这个简单的实例说明了如何使用ASP.NET MVC最基本的机制。控制器(Controller)是一个为请求提供服务的专门的组件。控制器(Controller)是一个只有方法没有状态的类。
下面我我们将学习重写和重定向之间的区别,和何时以及如何在ASP.NET Core 中使用它们。...我肯可以使用如下代码重写URL: context.Request.Path 重定向 重定向是在浏览器中通过一个或HTTP响应头触发一个新的HTTP请求,来在服务器上触发一个新的请求。...重定向是对客户端的HTTP标头的响应。...await next(); }); 上面的代码会拦截每个传入的请求并检查要重写的URL,当它找到时更改context.Request.Path并通过管道的后续部分继续处理,所有后续中间件组件现在都可以看到更新的路径...中的 URL 重写很简单,只需更改调用context.Request.PathURL即可重写,以路由到某些不同的端点。
本系列教程,我们将覆盖所有这些概念,并告诉您如何在ASP.NET MVC 5中使用它们来构建应用程序。 首先,让我们创建一个控制器类。...ASP.NET MVC会调用不同的控制器类(和其内部不同的操作方法)这取决于传入URL。...相反,我们通常会使用一个单独的视图模板文件来帮助生成返回的HTML。让我们来看看下面我们如何能做到这一点吧。 控制器是MVC中的重要组成部分,有了本节知识的学习,相信大家会更加深入地理解MVC。...ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 7. ASP.NET MVC 5 - 从控制器访问数据模型 8. ...ASP.NET MVC 5 - 使用Wijmo MVC 5模板1分钟创建应用 希望这些文章对感兴趣的朋友有所帮助,另附上PDF版的汇总文档: 《ASP.NET MVC 5 入门指南》PDF版
上述例子中创建HelloController中修改了默认的Index方法,将返回值修改为了一行html代码,开启浏览器调试查看。 Step3:直接访问控制器 ?...ASP.NET MVC会调用不同的控制器类(和其内部不同的操作方法)这取决于传入URL。 所使用的ASP.NET MVC的默认URL路由逻辑使用这样的格式来判定哪些代码以便调用。...---- 路由 这里就提到了一个很重要的概念,路由(URL Routing),什么是路由,在ASP.NET MVC中,一个URL请求是由对应的一个Controller中的Action来处理的,由URL...Routing来告诉MVC如何定位到正确的Controller和Action。...”的控制器和“Index” 的操作方法,在上面的代码中的defaults部分指定的: 第一部分的URL确定哪个控制器类会被执行。
路由请求 向IIS发出请求的时候,究竟发生了什么呢? 下图给出了在 ASP.NET MVC 和 ASP.NET Web Forms 应用程序中涉及相关的各个步骤如何工作的总体图。 ?...可以使用 ASP.NET MVC 应用程序中的 REST 方式,ASP.NET MVC 面向他是松耦合的,ASP.NET MVC 承认他的概念,如资源和行为,我们可以随意使用自己的语法来表达和实现资源和行动行为...例如,在一个纯粹的 REST 解决方案,是使用H TTP 谓词来表达行为动作(GET,POST,PUT和DELETE)和通过URL识别资源。...通过指定动作行为和资源可以自定义语法,在 ASP.NET MVC 中默认行为是使用自定义语法的 URLs。该语法是以 URL 模式的集合作为表现形式,也称为路由。...路由约束就是要求给定的 URL 参数必须遵循的 URL 匹配路由的附加条件。URL 不仅应与 URL 模式兼容,它也需要包含兼容的数据。一个约束可以以各种方式来定义,其中包括通过正则表达式。
再说回前面我们运行的ASP.NET MVC程序访问的http://www.aspnetmvc.com/Home/Index这个URL,它访问的其实是HomeController中的Index这个Action...url,因此控制生成SEO友好的URL将更加容易; 4.强类型View实现、Razor视图、Model绑定机制、Model的验证机制,更安全高效; 缺点: 学习成本高,结构复杂,对未变化数据的不必要的频繁访问...中查询数据时需要转换合适的类型 在ViewPage中查询数据时不需要类型转换 有一些类型转换代码 可读性更好 (6)如何在程序中使用ViewData与ViewBag ①在Controller中的代码...所以,所有的请求都是要指定一个具体的Action,Url的格式是根据路由规则来定的。那么,在ASP.Net MVC的路由规则默认又是什么,在哪里设置的呢?...如果我们想要改变默认的路由规则,例如我们想要以这种URL:http://localhost/Home-Index-1来访问项目,则直接将上面的默认路由规则改为:{controller}-{action}
对显示的更改,尽可能地不要影响到数据和业务逻辑。 目前大部分Web应用都是将数据代码和表示混在一起。...通过在ASPX页面中开发用户部件或继承母板页MasterPage来实现视图;控制器的功能一般可以放在对应的逻辑功能代码(.cs)中实现;模型通常对应应用系统的业务部分。...对View的改变,可以通过Asp.net2.0的主题(Themes)来实现。本例中编辑和查看详情页面,用的就是相同的视图(View)。...下面讨论如何实现一个模型、两个视图和一个控制器的程序。其中模型类及视图类根本不需要改变,与前面的完全一样,这就是面向对象编程的好处。对于控制器中的类,只需要增加另一个视图,并与模型发生关联即可。...对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。 (2)视图对模型数据的访问效率低。
领取专属 10元无门槛券
手把手带您无忧上云