关于ASP.NET CORE

NuGet

NuGet是开放源代码包管理系统,可以简化将库合并到项目解决方案的过程。

SDK(软件开发工具包)

SDK是文件集合,Visual Studio 将其视为单个引用项。

EntityFramework

创建对象关系映射上下文(ORM Context)

上下文类

1
2
3
4
5
6
7
8
9
10
11
12
13
public class EventsMenusContext:DbContext
{
public EventsMenusContext(DbContextOptions options):base(options) { }
public DbSet<Menu> Menus { get; set; }
public DbSet<Event> Events { get; set; }
}
//如果项目中含有多个上下文类,为避免报错写成下面这样
public class EventsMenusContext:DbContext
{
public EventsMenusContext(DbContextOptions<EventsMenusContext> options):base(options) { }
public DbSet<Menu> Menus { get; set; }
public DbSet<Event> Events { get; set; }
}

通过自定义连接创建上下文

1
2
3
DbContextOptionsBuilder builder = new DbContextOptionsBuilder();
builder.UseSqlServer(Configuration["Data:ConnectionStrings:MyConnection"]);
EventsContext context = new EventsContext(builder.Options);

依赖注入到控制器

1
services.AddScoped<context>();

简洁写法

1
2
3
4
5
6
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFrameworkSqlServer()
.AddDbContext<EventsMenusContext>(options=>
options.UseSqlServer(Configuration["Data:ConnectionStrings:MyConnection"]));
}

如果使用自动生成控制器功能,需要在上下文类中加入无参构造函数并重写上下文类中的方法,控制器及视图创建完成后,在使用注入方法时删除构造函数和重写方法。

1
2
3
4
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=mydb;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
}

ASP.NET CORE VUE.JS IVIEW

  1. Nuget RequireJS
  2. Nuget require.css
  3. Nuget Vue.Js.IView.UI

Ocelot

介绍

Ocelot是一个用.NETCore实现并且开源的API网关,它功能强大,包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Butterfly Tracing集成。

HTMLHelper

HTML 帮助器用于修改 HTML 输出。

HTML 帮助器

通过 MVC,HTML 帮助器类似于传统的 ASP.NET Web Form 控件。
类似 ASP.NET 中的 web form 控件,HTML 帮助器用于修改 HTML。但是 HTML 帮助器更轻。与 web form 控件不同,HTML 帮助器没有事件模型和 view state。
在大多数情况下,HTML 帮助器仅仅是返回字符串的方法。
通过 MVC,您能够创建自己的帮助器,或者使用内建的 HTML 帮助器。

标准的 HTML 帮助器

MVC 包含了大多数常用的 HTML 元素类型的标准帮助器,比如 HTML 链接和 HTML 表单元素。

HTML 链接

呈现 HTML 链接的最简单方法是使用 HTML.ActionLink() 帮助器。
通过 MVC,Html.ActionLink() 不连接到视图。它创建控制器操作(controller action)的连接。

Razor 语法:

1
@Html.ActionLink("About this Website", "About")

ASP 语法:

1
<%=Html.ActionLink("About this Website", "About")%>

第一个参数是链接文本,第二个参数是控制器操作的名称。
上面的 Html.ActionLink() 帮助器,输出以下 HTML:

1
<a href="/Home/About">About this Website</a>

Html.ActionLink() 帮助器的若干参数:

参数 描述
linkText 定位点元素的内部文本。
actionName 操作的名称。
controllerName 控制器的名称。
protocol URL 协议,如“http”或“https”。
hostname URL 的主机名。
fragment URL 片段名称(定位点名称)。
routeValues 一个包含路由参数的对象。
htmlAttributes 一个对象,包含要为该元素设置的 HTML 特性。
注释:您可以向控制器操作传递值。例如,您能够像数据库编辑操作传递数据库记录的 id。
Razor 语法 C#:
1
@Html.ActionLink("Edit Record", "Edit", new {Id=3})

Razor 语法 VB:

1
@Html.ActionLink("Edit Record", "Edit", New With{.Id=3})

上面的 Html.ActionLink() 帮助器,输出以下 HTML:

1
<a href="/Home/Edit/3">Edit Record</a>

HTML 表单元素

以下 HTML 帮助器可用于呈现(修改和输出)HTML 表单元素:

  • BeginForm()
  • EndForm()
  • TextArea()
  • TextBox()
  • CheckBox()
  • RadioButton()
  • ListBox()
  • DropDownList()
  • Hidden()
  • Password()
    ASP.NET 语法 C#:
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
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and 
try again.") %>
<% using (Html.BeginForm()){%>
<p>
<label for="FirstName">First Name:</label>
<%= Html.TextBox("FirstName") %>
<%= Html.ValidationMessage("FirstName", "*") %>
</p>
<p>
<label for="LastName">Last Name:</label>
<%= Html.TextBox("LastName") %>
<%= Html.ValidationMessage("LastName", "*") %>
</p>
<p>
<label for="Password">Password:</label>
<%= Html.Password("Password") %>
<%= Html.ValidationMessage("Password", "*") %>
</p>
<p>
<label for="Password">Confirm Password:</label>
<%= Html.Password("ConfirmPassword") %>
<%= Html.ValidationMessage("ConfirmPassword", "*") %>
</p>
<p>
<label for="Profile">Profile:</label>
<%= Html.TextArea("Profile", new {cols=60, rows=10})%>
</p>
<p>
<%= Html.CheckBox("ReceiveNewsletter") %>
<label for="ReceiveNewsletter" style="display:inline">Receive Newsletter?</label>
</p>
<p>
<input type="submit" value="Register" />
</p>
<%}%>

Consul

  1. 下载Consul服务程序
  2. 运行
1
consul.exe agent -dev
  1. 监控页面
1
127.0.0.1:8500/

Highlight语法高亮

地址 https://github.com/highlightjs/highlight.js/tree/master/src/styles
https://highlightjs.org/download/

获取服务端与客户端地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public IActionResult Index()
{
//获取客户端的IP地址
string clientIpAddress = httpContextAccessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
this.ViewData["ClientIpAddress"] = clientIpAddress;

//获取服务器上所有网卡的IP地址
NetworkInterface[] networks = NetworkInterface.GetAllNetworkInterfaces();
string serverIpAddresses = string.Empty;

foreach (var network in networks)
{
var ipAddress = network.GetIPProperties().UnicastAddresses.Where(p => p.Address.AddressFamily == AddressFamily.InterNetwork && !IPAddress.IsLoopback(p.Address)).FirstOrDefault()?.Address.ToString();

serverIpAddresses += network.Name + ":" + ipAddress + "|";
}

this.ViewData["ServerIpAddresses"] = serverIpAddresses;

return View();
}