(精华)2020年9月18日 ASP.NET Core 路由解析详解
【摘要】
公共部分
public class WeatherReport
{
private static readonly string[] Conditions = {"晴", "多云...
公共部分
public class WeatherReport
{
private static readonly string[] Conditions = {"晴", "多云", "小雨"};
private static readonly Random Random = new Random();
public string City { get; }
public IDictionary<DateTime, WeatherInfo> WeatherInfos { get; }
public class WeatherInfo
{
/// <summary>
/// 天气状况
/// </summary>
public string Condition { get; set; }
/// <summary>
/// 最高温度
/// </summary>
public double HighTemperature { get; set; }
/// <summary>
/// 最低温度
/// </summary>
public double LowTemperature { get; set; }
}
public WeatherReport(string city, int days)
{
City = city;
WeatherInfos = new Dictionary<DateTime, WeatherInfo>();
for (var i = 0; i < days; i++)
WeatherInfos[DateTime.Today.AddDays(i + 1)] = new WeatherInfo
{
Condition = Conditions[Random.Next(0, 2)],
HighTemperature = Random.Next(20, 30),
LowTemperature = Random.Next(10, 20)
};
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
路由的解析和view页面返回
public static class Sample01
{
private static readonly Dictionary<string, string> Cities = new Dictionary<string, string>
{
["010"] = "北京",
["027"] = "武汉"
};
public static void Run()
{
// const string template = @"weather/{city:regex(^{0\d{{2,3}}$)}/{days:int:range(1,4)}";
const string template = @"weather/{city}/{days}";
//const string template = @"weather/{city?}/{days?}";
//const string template = @"weather/{city=010}/{days=4}";
Host.CreateDefaultBuilder()
.ConfigureWebHostDefaults(builder => builder
.ConfigureServices(csv => csv.AddRouting())
.Configure(app => app
.UseRouting()
.UseEndpoints(endpoints => endpoints.MapGet(template, WeatherForecast))))
.Build()
.Run();
}
public static async Task WeatherForecast(HttpContext context)
{
var city = (string) context.GetRouteData().Values["city"];
city = Cities[city];
var days = int.Parse(context.GetRouteData().Values["days"].ToString() ?? string.Empty);
var report = new WeatherReport(city, days);
await RendWeatherAsync(context, report);
}
//public static async Task WeatherForecast(HttpContext context)
//{
// var routeValues = context.GetRouteData().Values;
// // 默认值 010
// var city = routeValues.TryGetValue("city", out var v1) ? (string) v1 : "010";
// city = Cities[city];
// // 默认值 4
// var days = routeValues.TryGetValue("city", out var v2) ? int.Parse(v2.ToString() ?? string.Empty) : 4;
// var report = new WeatherReport(city, days);
// await RendWeatherAsync(context, report);
//}
//public static async Task WeatherForecast(HttpContext context)
//{
// var city = (string) context.GetRouteData().Values["city"];
// city = Cities[city];
// var days = int.Parse(context.GetRouteData().Values["days"].ToString() ?? string.Empty);
// var report = new WeatherReport(city, days);
// await RendWeatherAsync(context, report);
//}
private static async Task RendWeatherAsync(HttpContext context, WeatherReport report)
{
context.Response.ContentType = "text/html;charset=utf-8";
await context.Response.WriteAsync("<html><head><title>天气</title></head><body>");
await context.Response.WriteAsync($"<h3>{report.City}</h3>");
foreach (var (key, value) in report.WeatherInfos)
{
await context.Response.WriteAsync($"{key:yyyy-MM-dd}:");
await context.Response.WriteAsync(
$"{value.Condition}({value.LowTemperature}℃ ~ {value.HighTemperature}℃)<br/><br/> ");
}
await context.Response.WriteAsync("</body></html>");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。
原文链接:codeboy.blog.csdn.net/article/details/108524635
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)