重新整理.net core 计1400篇[五] (.net core 添加mvc 中间件 )

前言

前面提过.net core web实际上是一个服务和若干个中间件组成。

现在我们有一个服务了,那么可想而知我们要完成mvc这种功能,我们需要的就是一个中间件。

好的,接下来,我们只要添加中间件即可。

正文

先来看下我的配置:

WebHost.CreateDefaultBuilder().UseKestrel().UseUrls("http://0.0.0.0:10052;http://0.0.0.0:10051;").ConfigureServices(services => services.AddMvc())
	.Configure(app=>app.UseMvc(routes =>
	{
		routes.MapRoute(
			name: "default",
			template: "{controller=Home}/{action=Index}/{id?}");
	})).Build().Run();

看着两个:ConfigureServices和 Configure

第一个什么意思呢?

配置服务?其实就是注入服务,比如我们需要mvc功能,那么我们需要将这个服务添加进入。

第二个什么意思呢?

比如说我们注入了服务,但是是默认配置啊,我希望呢,为一些配置制修改。

app=>app.UseMvc(routes =>
	{
		routes.MapRoute(
			name: "default",
			template: "{controller=Home}/{action=Index}/{id?}");
	}

这一段是不是特别的熟悉呢?

没有看错就是在配置我们的路由。

好的,接下来就开始写我们的代码吧。

我把我的目录截取一下:

来看下这个HomeController:

public class HomeController:Controller
{
	public IActionResult Index()
	{
		return View();
	}
}

这下更熟悉了吧。

我们知道视图的位置在:"{ContentRoot}\Views{ControllerName}{ViewName}.cshtml"

所以我根据规则建立了相应的试图:

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>index</title>
</head>
<body>
    home index
</body>
</html>

启动起来:

效果就是这样了。

在.net core web中实际上和原来我们的mvc不同。

请再看我的目录:

目录中的内容如下:

public class HelloController
{
	[HttpGet("/hello/{name}")]
	public string hello(string name)
	{
		return name;
	}
}

那么我启动起来:

说明两个问题,一个问题就是其实中间间扫描的整个目录下的后缀为Controll的class,第二个就是不一定我们非要去继承controller这个class,这个一般用来处理视图的。

posted @ 2020-05-14 14:52  敖毛毛  阅读(375)  评论(0编辑  收藏  举报