Do You Kown Asp.Net Core

  • 时间:
  • 浏览:1

默认清况 模型绑定不支持Get土土办法,你须要使用[BindProperty(SupportsGet=true)]

@page "{parameter:type?}"

可能亲戚亲戚朋友 的Index页面没办法 绑定任何数据,却说 我这里基本上只继承了PageModel,OnGet土土办法是个约定,查看mvc的源码让我发现它会获取On{handler}{Async}()。比如OnGet,它会在Get Index的完后 被执行,亲戚亲戚朋友 能够通过你是什么约定进行数据绑定,这里知道下在Razor Page下HttpMethod也是另一个handler,却说 我Razor Page的正确处理土土办法是通过handler进行的。

dotnet –version

你算不算 会问现在还支持/Controller/Action/ID 吗?

    最后推荐下每该人的.Net Core学习群:37624300054

Q:自定义routing的完后 ,无法支持绝对路径和相对路径

举个例子,亲戚亲戚朋友 在IndexModel中去掉 另一个String类型的属性Message,在OnGet中进行赋值:

输入dir,亲戚亲戚朋友 看下生成了那些:

A:关闭页面再打开。。。。

A:能够通过每该人重写IPageHandlerMethodSelector接口,有然后 注册到service中应该能够正确处理。

跟完后 mvc不同的是,亲戚亲戚朋友 不再就看model,view,controller目录了,取而代之的是Pages目录,你是什么却说 我亲戚亲戚朋友 的razor Page的主要工作目录。

问号代表可选参数。没办法 的好处却说 我亲戚亲戚朋友 不须要在RegisterRoute的完后 去填写规则了,是有的是很棒!

现在来说PageModel却说 我另一个Model,Action,HttpMethod的合体,对于Controller使用文件每该人的路径+文件名的土土办法,比如没办法 亲戚亲戚朋友 的HomeController,默认清况 下亲戚亲戚朋友 能够通过’/’访问能够能通过’/Home/’ 访问,这觉得有歧义的,为了正确处理你是什么清况 ,亲戚亲戚朋友 须要去修改Route,非常不方便,而现在,亲戚亲戚朋友 只须要在Pages主目录下创建相应的Action就能够了,微软提供了Razor Page的对应Url关系,如图:

在Razor Page中,数据绑定是非常简单的, 您假若在须要绑定的属性上去掉 [BindProperty]特性即可。

与命令土土办法创建的一致。

多了好多模板,好兴奋啊!亲戚亲戚朋友 在这里无法找到Razor Page,那是可能Razor Page可能变成默认的【Web应用系统应用应用程序模板】了,而传统的MVC土土办法可能变成【Web应用系统应用应用程序(模型视图控制器)】。选用 【Web应用系统应用应用程序模板】,点击选用 亲戚亲戚朋友 就完成创建了,通过Solution Explore,亲戚亲戚朋友 能够就看:

那些意思呢?比如当你创建另一个用户的完后 ,让假若跳转回用户列表页,并在用户列表页提示去掉 成功的信息,这完后 让我通过在Message属性上去掉 [TempData]特性,引用下微软Docs的例子:

    亲戚亲戚朋友 都知道在Asp.Net MVC中,Razor是其并算不算视图引擎。而今天亲戚亲戚朋友 介绍的Razor Page却是并算不算web框架,它是并算不算比较复杂的MVC框架,可能你没办法 做过WebForm的开发者,让我发现,Razor Page怪怪的这类Web Form,另一个page,另一个class。

    亲戚亲戚朋友 或许会有疑惑,亲戚亲戚朋友 现在Asp.Net MVC可能很完善了,为啥在么在在还须要出来并算不算新型的框架呢?在我看来,MVC觉得可能足够强大了,却说 我可能太强大了,却变成了它的缺点。当亲戚亲戚朋友 的业务没办法 庞大的完后 ,你算不算 觉得你的另一个Controller内内外部可能凌乱不堪?当亲戚亲戚朋友 业务模块划分不多的完后 ,你算不算 会为你的Model创建而头疼呢?当亲戚亲戚朋友 创建另一个新的View的完后 ,亲戚亲戚朋友 须要在MVC层增加另一个View,另一个Model,修改另一个Controller,每当你是什么完后 ,我还会疑惑这有的是违反Open-Closed Principle(对扩展开放,对修改关闭)了嘛!你是什么完后 我会想起完后 的webform,现在不须要了,亲戚亲戚朋友 有了Razor Page,并算不算更轻量级的MVC(觉得更像MVVM)。

通过上节亲戚亲戚朋友 创建了Razor Page项目,直接通过dotnet run可能在vs中F5运行。上文中亲戚亲戚朋友 说到,Razor Page的项目中,亲戚亲戚朋友 的关注点有的是Pages目录下,在VS Explore中,亲戚亲戚朋友 就看在Index.cshtml的左边另一个三角箭头,点击就会就看Index.cshtml.cs文件,是有的是感觉回到了webform。亲戚亲戚朋友 看下代码:

运行下,可能亲戚亲戚朋友 在页面上就看Message : this is a test!,说明赋值成功。

Q:用VS2017创建新的Page的完后 ,会在页面上显示红线

    上周期待已久的Asp.Net Core 2.0提前发布了,一下子Net圈热闹了起来,2.0带来了却说 我新的特性和新的功能,其中Razor Page引起我的关注,作为web系统应用应用程序员来说,Asp.Net下的任何web框架还会去怪怪的关注,可能每次另一个新的框架出来,原因分析分析一次革命。此次的Razor Page算不算 能带来不一样的体验呢,让亲戚亲戚朋友 同时来看看吧。

Q:不支持多个handler在同另一个pageModel中,比如OnGet, OnGetAsync必须在同另一个PageModel中

用Visual Studio 2017创建是非常方便的(宇宙最强IDE),不过亲戚亲戚朋友 须要要先升级到15.3,升级完后 选用 新建项目->.Net Core –> Asp.Net Core Web应用系统应用应用程序,接下来会弹出另一个对话框,让亲戚亲戚朋友 选用 模板类型:

支持,不过你须要在cshtml页面上,通过@page设置路由

是有的是很方便,一般亲戚亲戚朋友 的web基本上百分之八十在Get和Post,怪怪的清况 会出現你是什么HttpMethod,当然亲戚亲戚朋友 的RazorPage也支持,不过不建议。

抱歉,目前我没办法 找到最佳的正确处理土土办法,没办法 我打算在@page "~/user/{id:int}",有然后 测试结果发现不支持,可能亲戚亲戚朋友 的page对应到url也是另一个目录,@page route的完后 它不用识别绝对路径和相对路径,它只会在当前路径后面 去掉 映射,也却说 我说亲戚亲戚朋友 的url变成了/users/user/{id},目前最佳的正确处理土土办法是建立另一个目录,如下:

这类 /Address/Province/City  亲戚亲戚朋友 只须要在Address/Index.cshtml页面去掉 入如下:

@page "{Province}/{City?}"

那像没办法 亲戚亲戚朋友 在另一个Controller中,有Get()和Get(id)表示获取列表和获取单个Item,那在Razor Page中怎样运用呢?

跳转到Index后,亲戚亲戚朋友 的IndexModel的Message属性(须要同样设置TempData特性)就会被赋值。怪怪的这类于完后 的model传递,但又不一样,感觉棒棒哒!

先通过命令,到你须要创建项目的目录,我这里为E盘下demos目录:cd e:\demos\RazorPageDemo1

    最近工作怪怪的忙,Core2.0的出現使Net圈沸腾了,RazorPage的出現更是让亲戚亲戚朋友 你是什么web开发者为之振奋,今天介绍的有限,毕竟也是刚出来的东西。每该人觉得Razor Page还是非常棒的,觉得还你是什么问提,可能遇到Razor Page无法正确处理的事情,请亲戚亲戚朋友 结合MVC,国外有大神却说 我没办法 做的,但我相信不久完后 ,Razor Page会疯狂出現在亲戚亲戚朋友 身后,怪怪的是对于微服务架构来说,简单和快速是微服务的重要所在。

A:应该能够通过重写某个接口达到目的,稍后我会看下

亲戚亲戚朋友 能够通不多种土土办法来创建Razor Page项目,最简单的却说 我利用dotnet命令土土办法,当然我还是建议您使用Visual Studio 2017(宇宙最强的IDE)。要创建Razor Page,你须要先安装.Net Core 2.0 SDK,可能要使用VS2017来创建,您还须要要更新到15.3版本以上

TempData是Asp.Net Core 2.0新增的特性,你只须要在PageModel中的属性上去掉 TempData特性即可。去掉 TempData特性的属性,会在你跳转路由可能页面的完后 隐性的传递过去。

有然后 亲戚亲戚朋友 修改下Index.csthml:

输入以上命令,你就可能创建了razorPage的项目了,这里说一下dotnet 2.0默认是自动restore的,你能够能通过--no-restore选项关闭。亲戚亲戚朋友 直接通过命令dotnet run 能够直接运行,就看的页面应该跟完后 mvc创建的这类。

打开cmd可能powershell工具,先检查下你的dotnet 版本算不算 为2.0.0