老司机带你了解.net core 新建项目web应用程序和web应用程序(模型视图控制器)的区别

今天这个老司机其实也不是老司机,在.net core上面,也是新司机,都是现炒现卖而已,文中有不对的地方,敬请各位少点口水哈;后续的文章都是关于.net core做项目中遇到的问题的一些笔记仅此而已,如能使您学到或者了解点新东西,那自然最好不过了。公司新项目使用.net core来开发了,今天在搭建项目时,在新建.net core的web项目时,有两个选项,一个是【web 应用程序】,一个是【web应用程序(模型视图控制器)】,见下图所示:

老司机带你了解.net core 新建项目web应用程序和web应用程序(模型视图控制器)的区别 1

现就两者的区别介绍下如:

  • web应用程序

创建好web应用程序后,在网站根目录下有两个文件夹:wwwroot、Pages。

Wwwroot:这个目录自不必多言,主要是放一些静态资源文件,如js文件、css文件、图片文件等,展开目录一眼便可看出。

Pages目录:项目创建好后,默认有下图展示的一些文件,从命名上来看,有视图的起始页,布局页,以及首页、关于等界面。

老司机带你了解.net core 新建项目web应用程序和web应用程序(模型视图控制器)的区别 2

左侧的三角可以展开,展开好,有一个C#的类文件,类似于webform的代码后置文件,这个类文件就是处理当前页面请求事件的,如:点击按钮保存、翻页查询、ajax请求响应等的处理都可以以后置类里面写代码来搞。

在带有身份认证的网站,你可以分为前台和后台,这时你可以在Pages目录下新建个目录,如Manage,然后就可以在Manage里面新建页面来实现相应的功能,如下图所示我们可以直接在Manage目录上右键->添加->Razor页面

老司机带你了解.net core 新建项目web应用程序和web应用程序(模型视图控制器)的区别 3

我执行了添加操作,并且添加了一个Login页面,用于处理登录事件,如下图所示:

老司机带你了解.net core 新建项目web应用程序和web应用程序(模型视图控制器)的区别 4

然后我们运行下网站看看效果,就是长成下面图的一个样子,注意地址栏的地址是:http://localhost:10415/manage/login

老司机带你了解.net core 新建项目web应用程序和web应用程序(模型视图控制器)的区别 5

怎么样?看到了吧,是不是类似于webform时代aspx页面的样子呢?

问题:如果我想在根目录新建个文件夹来保存我网站功能的页面,是否可行呢?答案是:No,反正我目前还不知道如果要这样子搞,该怎样弄,因为我也是对.net core摸着石头过河再使用,如有朋友知道,请告诉我一声。我们来实际试试吧,在根目录新建个目录:UserAdmin,然后看看能不能新建页面,结果如下图所示:

老司机带你了解.net core 新建项目web应用程序和web应用程序(模型视图控制器)的区别 6

从实际操作来看,没有办法在根目录里面通过右键创建的文件夹新建页面地。

那我们换种姿势来新建个页面试试呢,使用快捷键来搞搞,选中UserAdmin目录按 Ctrl+Shift+A,出来如下界面,并选择页面,创建好后的页面,我是没有找到咋访问地。

老司机带你了解.net core 新建项目web应用程序和web应用程序(模型视图控制器)的区别 7

页面是创建好了,咋访问啊?不能访问没用啊。。。。

老司机带你了解.net core 新建项目web应用程序和web应用程序(模型视图控制器)的区别 8

总结:基于以上的操作实验,web应用程序的项目,兜兜转转,似乎又回到了ASP.NET Web 窗体通过aspx页面时代以目录来组织网站的功能页面了。换句话说就是:使用 Razor 页面,可以创建简单的文件夹层次结构,映射到应用程序的 URL 结构。这样子搞的好处是可以减少MVC 应用程序需要遵循的约定。

 

  • web应用程序(模型视图控制器)

如果您新建的项目选择的是【web应用程序(模型视图控制器)】,则在网站的根目录则中规中矩生成了4个文件夹,分别是:wwwroot、Controllers、Models、Views,有过MVC开发经验的童鞋一看就明白怎么回事了,如下图所示:

老司机带你了解.net core 新建项目web应用程序和web应用程序(模型视图控制器)的区别 9

Wwwroot:存放静态资源文件,如js文件、css文件、图片文件等。

Controllers:控制器,存储页面文件后台处理类,类里面可以处理如页面提交过来的按钮事件、ajax 查询等等。

Models:模型,模型大家应该都知道啥意思,有些朋友把要持久化的Model和页面显示或者前后台数据交互传数据的Model也放这里面,也是可以的,至于合不合适,在我看来,自己喜欢就好。

Views:这个好理解,在网站里面你就当成网页文件吧。

 

总结:web应用程序与web应用程序(模型控制器)的区别

  • 目录组织结构不一样,前者是每个页面都会生成后置代码类,可以用于处理前台提交到后台的事件,后者是通过Controller;当然前者也可以建立Controller来处理,看你喜好搞吧
  • Url生成方案不一样,前者通过目录生成,而后者通过路由确认(这样说不知道对否哈)
  • 前者的Razor 页面可以支持强类型页面模型。使用 @model 指令,为页面指定模型(这点与强类型 MVC 视图一样),也可以在后置代码里面定义模型,这点与Mvc视图放到Models目录有点区别。

后记:如何将控制器/视图页面改为使用 Razor 页面?

1、将 Razor 视图文件复制到 /Pages 文件夹中的相应位置。

2、将 @page 指令添加到视图。如果这是仅支持 GET 的视图,操作到此结束。

3、添加名为 viewname.cshtml.cs 的 PageModel 文件,并将它放入包含 Razor 页面的文件夹中。

4、如果视图有 ViewModel,请将它复制到 PageModel 文件中。

5、将与视图关联的所有操作从 Controller 复制到 PageModel 类。

6、重命名操作,以使用 Razor 页面处理程序语法(例如,“OnGet”)。

7、使用页面方法替换对视图帮助程序方法的引用。

8、将任何构造函数依赖关系注入代码从 Controller 复制到 PageModel 中。

9、将视图的代码传递模型替换为 PageModel 上的 [BindProperty] 属性。

10、同时,将接受视图模型对象的操作方法参数替换为 [BindProperty] 属性。

 

——————————————————完—————————————————————

User Review
0 (0 votes)
本站最新优惠

Namesilo优惠:新用户省 $1 域名注册-优惠码:45D%UYTcxYuCloZ 国外最便宜域名!点击了解更多

特别优惠:免费赠送 $100 Vultr主机-限时优惠!英文站必备海外服务器!点击了解更多

VPS优惠:搬瓦工优惠码:BWH3OGRI2BMW 最高省5.83%打开外面世界的一款主机点击了解更多

原创文章,作者:江小编,如若转载,请注明出处:https://jhrs.com/2018/15154.html

扫码关注【江湖人士】公众号,您会获得关于国外被动收入的最新资讯

WA付费会员QQ群:387027533,加这个群需要回答您的WA会员名,待核实后予以通过

普通QQ交流群:178758794,可分享交流建站的各类经验和知识

发表评论

登录后才能评论