.net core
依赖注入
是一种设计模式 ,在类和其依赖项之间实现控制反转。
.net core 学习路线 https://github.com/MoienTajik/AspNetCore-Developer-Roadmap/blob/master/ReadMe.zh-Hans.md
HTTP和HTTPS协议
参考:https://zhuanlan.zhihu.com/p/72616216
计算机之间为了通信达成的一种规则。
HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
基于TCP/IP通信协议来传递数据的协议
HTTPS (HyperText Transfer Protocol over Secure Socket Layer) HTTP+SSL/TLS
SSL 安全套接字
URI和URL的区别
- URI:Uniform Resource Identifier 统一资源标识符
- URL:Uniform Resource Location 统一资源定位符
url 长度有限制,因而get 提交数据大小也有限制
域名系统(英文:Domain Name System,缩写:DNS) 作为将域名和IP地址相互映射的分布式数据库, IP地址记起来不那么方便,DNS应运而生。
动软代码生成器: bilibili 视频教程 https://www.bilibili.com/video/BV127411m7m9?p=2
MVC
var userInfo =@Html.Raw(Json.Encode(ViewBag.memberInfo));
//写在Controller继承类里,用来判断用户是否登录
/// <summary>
/// 权限验证
/// </summary>
/// <param name="filterContext"></param>
protected override void OnAuthorization(AuthorizationContext filterContext) {
//判断是否跳过授权过滤器
if (filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true)
|| filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true))
{
return;
}
}
form 表单值传递至后台
前台代码:
<div>
@using (Html.BeginForm())
{
<p>
姓名:<input type="text" name="name" />
<input type="submit" value="送出" />
</p>
}
<form action="Home/Test" method="post">
<p>
ID:<input name="name" type="text" />
<input type="submit" value="送出" />
</p>
</form>
</div>
<p>
Your name :@ViewBag.Name
Model :@Model
</p>
后台:
public IActionResult Index(IFormCollection form)
{
ViewBag.Name = form["name"];
ViewData.Model = form["name"];
return View();
}
IFormCollection 和Request 比较类似
传值: ViewData、 ViewBag 、TempData
Model : 在view视图添加 @model IEnumerable<T>
Tuple .net Framework 4.0 提供 可读性不好,但是可以省下不少定制化ViewModel 类
//在controller 判断是get还是post
if (Request.HttpMethod.Equals("get", StringComparison.OrdinalIgnoreCase)) {
return View();
}
前端
时间:
new Date().toLocaleString()
递归组合算法 [电商]商品发布规格组合算法
var res = generateGroup([["红色", "蓝色"], ["X", "XL"], ["10m", "20m","33m"]]);
console.log("generateGroup",res)
//递归组合 function generateGroup(arr){ //判断二维数组长度是否大于1 //如果大于1则去递归组合,否则返回第0个数组 if(arr.length> 1){ //创建结果数组,用于保存结果 var result= new Array(); //第一个二维数组元素作为初始数组 var base= arr[0]; //删除二维数组第0个数组 arr.splice(0,1); //递归获取下一个数组 var next = generateGroup(arr); //遍历基数组 for(var i=0;i<base.length;i++){ //遍历递归获取的数组 for(var j=0;j<next.length;j++){ //组合结果放入结果数组 result.push(base[i]+","+next[j]); } } //返回结果数组 return result; }else{ //返回第0个数组元素 return arr[0]; } }
js发送get 、post请求 参考: https://www.cnblogs.com/Im-Victor/p/9405974.html
var httpRequest = new XMLHttpRequest();//第一步:建立所需的对象
httpRequest.open('GET', '/ProSpec/GetAllProSpecRules', true);//第二步:打开连接 将请求参数写在url中 ps:"./Ptest.php?name=test&nameone=testone"
httpRequest.send();//第三步:发送请求 将请求参数写在URL中
httpRequest.onreadystatechange = function () {
//要加上这个判断,不然会访问3次 readyState三次访问的值分别为 2 3 4
if (httpRequest.readyState == 4 && httpRequest.status == 200) {
vueAll.proSpecRuleList = httpRequest.responseText
}
};
未分类:
function getUrlParam(k) {
var regExp = new RegExp('([?]|&)' + k + '=([^&]*)(&|$)');
var result = window.location.href.match(regExp);
if (result) {
return decodeURIComponent(result[2]);
} else {
return null;
}
}
Request Validation in ASP.NET
https://docs.microsoft.com/en-us/previous-versions/aspnet/hh882339(v=vs.110)?redirectedfrom=MSDN
必填
lay-verify="required"
Enum 枚举
TaskStatus= (TaskStatusEnum)Enum.Parse(typeof(TaskStatusEnum), taskToken.GetTokenValue("status"))
controller 获取数据
获取get 参数 Request.Query("")
获取表单数据 Request.Form()
Session数据 HttpContext.Session.SetString()
asp.net mvc 与asp.net core mvc 区别
asp.net 采用iis运行网站;
.net core 不需要iis即可运行
什么是mvc
M:model 模型 包含业务逻辑与业务数据
V:View 视图 呈现数据
C:Controller 控制器 接受请求
谁在使用 .net core
操作符重载
public static ISpecification<T> operator &(ISpecification<T> first, ISpecification<T> second) {
return new AndSpecification<T>(first,second);
}
.NET Core CLI command-line interface
C# ?? 含义:如果 ?? 运算符的左操作数非 null,该运算符将返回左操作数,否则返回右操作数。
构造函数内可对readonly 字段赋值
if (Request.HttpMethod.Equals("get", StringComparison.OrdinalIgnoreCase)) { return View(); }