instantbox——在很短的时间内建立一个全新的Linux操作系统(使用ttyd Webshell访问控制)

环境

  • VPS一枚
  • Docker(instantbox并没有给出其他安装方式)

参考&项目地址

步骤

  1. 安装Docker,控制台输入指令
    wget -qO- https://get.docker.com/ | sh

    详见 多平台安装Docker

  2. 控制台输入指令
    mkdir instantbox && cd $_
    bash <(curl -sSL https://raw.githubusercontent.com/instantbox/instantbox/master/init.sh)

    之后按提示输入IP地址和网页监听端口,一键搭建

Continue reading “部署instantbox”

一、简化null判空

再写Controller代码的时候有一处判空:

db.Users.Single(x => x.ID == housework.ToID).Username ? null :

这句代码还没写完,VS就提示此处可以简化null判空,去搜索了一下,发现语法糖一枚:

//假如有如下判空
A == null ? B : A
//可以使用 ?? 运算符简化为
A ?? B

喜闻乐见的结局——之后发现原来的写法有bug,没用上这个语法糖。

二、List<>类型与IQueryable<>,IEnumerable<>类型的相互转换

参考

IQueryableIEnumerable 转为List类型可以使用ToList()方法:

users.ToList();

List转为 IQueryableIEnumerable 也有一个方法,名为AsQueryable()AsEnumerable()

var houseworkShowcase = new List<HouseworkShowcaseViewModel>();

... ...

return View(houseworkShowcase.AsQueryable());

三、<p><pre>标签内容自动换行

参考

总言之,手动设定<p><pre>标签的 white-spaceword-wrap 属性即可:

<div>
    <h3>事务描述</h3>
    <p style="white-space: pre-wrap; word-wrap: break-word;">@Html.Raw(Model.Content)</p>
</div>

有一页面需要提交表单,表单中有一hidden type的input标签,包含页面模型的ID属性。

通常情况下,我选择将value写在type和name中间,将模型的属性值直接给value,不加引号,像这样:

这种情况下,ASP.NET生成出的页面代码是正常的,即value的值是正常的ID属性的值。

但是如果将value移到最后写,与input的结束标签连起来,又不加引号,像这样:

最后ASP.NET生成的页面代码会变成这样:

value的值会包含结束标签的斜杠,导致无法正常传输属性值,加入引号后恢复正常: