问题
在使用Razor Pages Web 应用程序时,发现这个比MVC模式更加方便快捷,代码也更加简洁直观。而且是基于MVC的,那么就可以使用Controller、View了才对。但是在创建验证码的时候需要访问Controller返回验证码图片字节,但是一直不成功。
解决方法
- 在visual studio 2017下模仿MVC模式创建Controllers、Views文件夹
- 创建controller,并添加添加你想要的视图或不要
- 在配置cs文件startup.cs中,找到Configure方法,将其中代码app.UseMvc();改为如下
app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); });
这里是为mvc配置了路径映射,这样就不会找不到controller了。
再问
-
问题: 既然可以在Razor Pages Web应用程序中使用MVC模式,那么如果同时在Views和Pages中都存在的页面,.NET Core是去访问哪一个呢?
-
实践:
- 创建TestController控制器,生成视图:Views/Test/Index.cshtml
- 创建Razor Page,路径为Pages/Test.cshtml
- 启动,访问/Test,得到的是Razor页面,访问/Test/Index,得到的是MVC页面
-
结果:当路径同时满足两种模式时,会得到Razor Page,即Pages中的页面