请别人做网站大概要多少钱,建网站对企业的作用,商水建设局网站,标识设计是什么简介
随着ASP.NET Core 2 即将来临#xff0c;最热门的新事物是Razor页面。在之前的一篇文章中#xff0c;我们简要介绍了ASP.NET Core Razor 页面。 Razor页面是ASP.NET Core的一个新功能#xff0c;可以使基于页面的编程方式更容易#xff0c;更高效。 大众的初步印象是…简介
随着ASP.NET Core 2 即将来临最热门的新事物是Razor页面。在之前的一篇文章中我们简要介绍了ASP.NET Core Razor 页面。 Razor页面是ASP.NET Core的一个新功能可以使基于页面的编程方式更容易更高效。 大众的初步印象是对于那些只专注于页面的小型应用来说Razor页面更容易、更快地取代MVC。然而事实证明它可能比这更强大。使用ASP.NET Core 2在创建新的应用程序时Razor页面空Razor页面Web APIMVC是默认选项似乎ASP.NET团队对Razor页面有更多的计划并希望它成为创建Web应用程序时首选。
所有的Razor页面类型和特征都在Microsoft.AspNetCore.Mvc.RazorPages程序集中MVC默认包Microsoft.AspNetCore.Mvc已经包含了Razor页面组件这意味着您可以在MVC应用程序中直接使用Razor页面。
Razor页面的优点之一是设置和创建非常容易。您创建一个新的空项目添加Pages文件夹添加页面只需在 .cshtml 文件中编写代码和标记。非常适合新手是学习ASP.NET Core简单快速的方法
Why
如果您想使用MVC构建几个简单的页面你需要将控制器 Action、HTML视图、视图模型、路由分别在单独的位置编写这看起来似乎很过分了。
在Razor页面中只有一个Razor文件.cshtml后台的代码也位于该文件内该文件也表示应用程序的URL结构稍后将会介绍。因此您可以将所有内容都放在一个文件中就这么简单。
但是您可以使用 .cshtml.cs 扩展名文件将后台代码分开。通常在该文件中包括视图模型和Handlers 如MVC中的Acion方法也可以在该文件中的处理逻辑。当然您也可以将您的视图模型移动到单独的文件中。
创建Razor页面应用程序
在VS 2017中安装.NET Core 2 SDK的情况下如果我们按照这样的方式文件 - 新建项目 - Web - ASP.NET Core Web应用程序我们将得到下面的窗口 手动将身份验证类型改为“个人用户帐户”。
我们也可以通过CLI实现同样的效果 dotnet new razor --auth Individual
在dotnet CLI创建一个新项目之后我们将在的项目中得到以下结构 首先注意到是没有Views文件夹, 如果没有选择授权选项, 那么也不会有Controllers文件夹。在我们的例子中有AccountController控制器在 Pages 文件夹中包含Account 文件夹。该文件夹的中我们存放Razor页面在MVC中这些代码通常放在 ~Views/Account 文件夹中 页面的默认位置是Pages文件夹但可以更改 大部分页面都附带.cs文件表示页面的模型: 在.cs文件中我们可以定义我们的逻辑、HandlersAction、模型和所有需要的逻辑。我们也可以把它当作是.cshtml页面的粘合剂仅处理GET / POST / PUT / DELETE也可以将逻辑移到单独的类或层/项目中。
需要注意的一点是我们需要在 .cshtml 文件的顶部定义 page 指令。这告诉Razor这个 .cshtml 文件是Razor Page文件 ASP.NET Core Razor页面 - 核心功能
由于Razor页面是MVC框架的一部分我们可以在Razor页面中使用MVC所附带的任何功能。
模型绑定
在MVC中模型绑定也适用于Razor页面就像MVC控制器中的Action方法一样在Razor页面代码有Handlers 。
在ChangePassword页面.cshtml文件编写如下表单 ChangePassword.cshtml.cs文件中实现ChangePasswordModel类 这里是InputModel类 InputModel提供了我们在MVC中熟悉的ViewModel功能。
Handlers
我们使用Handlers作为处理HTTP请求GETPOSTPUTDELETE ..的方法。例如我们可以有以下方法
OnGet / OnGetAsyncOnPost / OnPostAsyncOnDelete / OnDeleteAsync
这些方法将由ASP.NET Core根据HTTP请求的类型自动匹配。
让我们回到之前ChangePassword的示例。这是ChangePassword.cshtml.cs文件的一部分代码 OnGetAsync和OnPostAsync是Razor页面 handlers约定好了的名称。一旦您打开ChangePassword页面OnGetAsync handler 将执行当您从ChangePassword.cshtml页面提交表单OnPostAsync handler 将被触发。
此外我们可以将所有的页面代码放在 .cshtml 文件中。例如我们可以将这两个函数从ChangePassword.cshtml.cs文件移动到ChangePassword.cshtml中 关键字 functions 指令它使Razor文件范围内的代码成为功能级方法。
Tag Helpers and HTML Helpers
我们还可以在Razor页面内使用所有现有的Tag Helpers 和HTML Helpers此外可以创建自定义的帮助类并在Razor页面中使用它们。
路由
我在GitHub中的小项目设置演示了如何使用Razor页面进行CRUD - 仓库链接 。您需要.NET Core 2.0 preview 3build 6764 才能正常运行或更高版本以及Visual Studio 2017.3或更高版本。
以下是所有文件的项目结构 除了两个标准文件 Program.cs 和 Startup.cs 一切都在Pages文件夹中请注意某些页面具有匹配的后台代码文件。
如前所述项目中页面的位置文件系统中的路径将确定匹配的URL。
这里是一些重要页面文件和路由匹配的列表
页面文件路径匹配的URL~Pages/Index.cshtml/ /Index~Pages/Categories/Index.cshtml/Categories Categories/Index~Pages/Categories/Edit.cshtml/Categories/Edit/1~Pages/Categories/Create.cshtml/Categories/Create
总结
Razor页面是以网页为重点的Web编程方式您可以如果您想在一个文件中实现所有的代码和HTMLRazor页面文件的路径决定了您的页面的URL/路由这不是老的ASP.NET网页的新实现在MVC中可以使用的的功能我们也可以Razor页面中使用模型绑定Razor支持Tag HelpersHTML HelpersHandlers (Action方法)等等... 我们有OnGetOnGetAsyncOnPostAsync等Handlers文件系统项目结构中的页面位置决定URL路径需要一个根文件夹默认存储在 Pages 根文件夹中可配置