你好! 在本文中,我们将介绍使用C#(特别是.NET Core 3.0)创建自己的博客系统的基础知识。 本系列博客文章的目的是告诉大家编写自己的基本博客系统有多么容易,并希望激发您创建自己的博客系统或将其用作更好或更广泛的基础的想法。
警告:关于我为何个人希望我的第一个教程系列完全针对这个主题,前几段内容有些虚构。 如果您对阅读背景完全不感兴趣,只需向下滚动即可。
回到很小的时候,我永远无法弄清楚写日记的意义或目的。 我显然知道有男同学和女同学每天写日记,显然,在我们很小的少年时代,所有的男孩都想偷看其中一个,看看我们的女同学写了些什么以及他们对我们的想法。 但是即使在那些日子里,写关于您所发生的事件的想法以及您只需要将其锁定在自己身边的想法的作法似乎还是很奇怪的。我当然认为如果您写的是经验或好主意您曾想与尽可能多的人分享它并得到他们的支持。
我什至有一个漂亮的皮革笔记本,本来应该是给我的一本日记,但我从没去过。 它只是呆在一个完全空的抽屉里,直到被扔出去或浪费时间。
但是仅在短短几年后,我们终于从拨号互联网升级为宽带。 这将我的上网时间从1小时增加到了始终在线。 改变是巨大的,我被立即接受。起初,我做了13岁的年轻人在互联网上所做的事情……我访问了Flash游戏网站,观看了有趣的视频,在MSN Messenger上与我的朋友聊天并加入了公共论坛在这里我可以讨论我最喜欢的动画片,运动队,电影和爱好。
有一天,当我在一个论坛上阅读时,我经常看到有人张贴了一个链接,并在刚写的博客上向人们征求意见。 现在,我从未听说过写博客,这对我来说是一个全新的领域。 我注意到漫长的文字思考之墙,有时间的pff立即将其关闭,并继续从事我的业务。
但是后来发生了一件奇怪的事情,第二天,当我返回并登录到我最喜欢的论坛时,我注意到这个人发来的征求人们对他博客文章的观点的文章是头条新闻,不仅如此,而且它似乎聚集了更多在一整夜中收到超过300条评论。 我感到困惑,同时感到惊讶。 显然,我必须看到这些评论在说什么,当然,对于这个人链接的文字长城,他们肯定不为所动。
不,这是一个混血儿,有些人不同意提交人要提出的观点,有些人称赞他并捍卫他的立场,另一些人则与他抗衡。 这仍然不足以说服我,所以我忽略了它,开始了我的业务,避免了有问题的论坛帖子。
几天过去了,帖子仍在论坛的顶部。 到那时,我终于决定“操蛋”,让我们看看所有骚动是什么。 我开始阅读,认为我会很快感到无聊,并且会像对待其他我认为过长而又无聊的事情一样浏览它。 但是后来我一直在不断阅读和阅读,对于我一生来说,这些年来我一直不记得那个帖子的确切含义或它为什么吸引了我这么多,但是我清楚地记得到达它的结尾并感到失望没有更多了。
就这样,我明白了。 那也是我学习编码的第一年。 现在,那时我们还没有YouTube和视频教程来教您如何在线进行酷狗屎。 但是我们确实有手册,光荣的无聊手册。
我学习的第一门语言是C ++,紧随其后的是PHP,因为我真的很想建立网站,论坛,门户网站等等。
我建立的第一件事就是我自己的博客,当然只有13个博客,而且没有可支配收入,所以我无法托管它。 但是我确实知道如何打开路由器上的端口并自己托管它,这当然意味着该博客仅在某些时间可用。 无论内容如何,并不是说它会取得很大的成功……读起来就像是一个13岁的孩子写的那样,因为它确实是。
多年来,我一直在开发博客系统,并且在这方面做得非常好,现在终于在他漫长而无聊的故事之后,我想将我的一些知识告诉你。
因此,您首先需要的是:
请记住,本教程是为中级开发人员准备的,如果您从未使用过C#或dotnet,那很好,我将在进行解释的同时向您解释,但需要一些先验开发知识,尤其是诸如了解数据库的方式以及如何编写基本内容的知识。 SQL CRUD语句。
好的! 现在,这已成为我们的way法,您已经准备好工具。
我们要做的第一部分是运行
dotnet --version
您正在寻找的输出是:
D: \D ayvi \W orkspace \T utorials \B log series \P art one>dotnet --version
3.0.100
如果这不是您的输出,或者有可用的Dotnet较新版本,则本教程的某些部分可能与您的系统有所不同。
右键然后创建您的工作区文件夹,在其中打开命令提示符并运行
dotnet new web
如果一切顺利,您应该看到:
D :\Dayvi\Workspace\Tutorials\Blog series\Part one>dotnet new mvc
The template "ASP.NET Core Web App (Model-View-Controller)" was created successfully.
This template contains technologies from parties other than Microsoft, see https ://aka.ms/aspnetcore/ 3.0 -third-party-notices for details.
Processing post-creation actions...
Running 'dotnet restore' on D :\Dayvi\Workspace\Tutorials\Blog series\Part one\Part one.csproj...
Restore completed in 60 , 91 ms for D :\Dayvi\Workspace\Tutorials\Blog series\Part one\Part one.csproj.
Restore succeeded.
现在,我们只需运行以下命令即可打开Visual Studio代码
code .
直接在命令提示符下,该命令中的句点告诉它在Visual Studio代码中打开当前文件夹。 按下F5进行调试,然后等待在Visual Studio代码中弹出提示,询问您要使用的配置。 只需选择.NET Core,然后按Enter。
就像您的项目应该在调试模式下启动并运行一样。您也可以通过在项目所在的文件夹中打开命令提示符来运行它
> dotnet build
> dotnet run
要么
dotnet watch run
有关更多信息,请阅读dotnet watch
就我个人而言,我喜欢dotnet watch run
在开发时dotnet watch run
效果最好,因为它每次进行更改并保存更改时都会自动重新编译和重新启动您的应用程序。
在使用首选方法成功启动dotnet MVC应用程序之后,应该会看到以下消息:
info: Microsoft.Hosting.Lifetime[ 0 ]
Now listening on: https: //localhost:5001
info: Microsoft.Hosting.Lifetime[ 0 ]
Now listening on: http: //localhost:5000
在您喜欢的浏览器中打开这两个地址(Visual Studio和Visual Studio代码应自动为您启动成功)。 不应出现欢迎屏幕。
现在让我们创建完成后的文件夹结构,它看起来应该像这样:
├───App
├───bin
│ └─── Debug
│ └───netcoreapp3 .0
│ └─── Properties
├───Controllers
├───Models
├───obj
│ └─── Debug
│ └───netcoreapp3 .0
│ └───staticwebassets
├─── Properties
├───Views
└───wwwroot
没有什么太花哨的,没有太疯狂的。 你们中有些人可能想知道为什么我不简单地与之合作:
dotnet new mvc
好吧,我的原因很简单,我相信它带有waaay的文件太多,在进行全新安装之前,必须删除这些文件。 现在,让我们回到Visual Studio代码,右键单击我们的Models文件夹(如果您使用的是Visual Studio,请确保在项目中包括新创建的文件夹),然后选择创建新的C#类(如果没有该选项,请安装)推荐的Visual Studio代码扩展或更新Visual Studio代码。
将您的类Model.cs
并对其进行编辑,如下所示:
using System;
namespaceBlog.Models {
public class Model {
// Everything needs and ID, not explanation required
public string ID{ get ; set ;}
// Will hold the original creation date of the field,
// the default value is set to DateTime.Now
public DateTime Created { get ; set ;} = DateTime.Now;
// will hold the last updated date of the field
/// will initially be set to DateTime.Now, but should be updated on every...update
public DateTime Updated { get ; set ;} = DateTime.Now;
public bool Deleted { get ; set ;} = false ;
}
}
这将是我们的基础模型类,所有其他模型都将继承该基础模型类,接下来让我们使用超级灵感的原始名称来创建我们的后期模型,并调用它,您读吗? Post.cs
!
namespace Blog.Models {
public class Post : Model {
public string Title { get ; set ;}
public int Views { get ; set ;} = 0 ;
public string Content { get ; set ;}
public string Excerpt { get ; set ;}
public string CoverImagePath { get ; set ;}
public bool Public { get ; set ;}
}
}
如您所见,我们正在扩展Model类,这意味着Post类具有Model拥有的所有成员,即拼!
还记得我讲的故事时,我说我曾经读过的第一个博客过早结束了吗? 好吧..希望您喜欢我的教程系列的第一部分,如果您有任何疑问或评论,请随时通过@arctekdev与我联系
我知道这不是很多信息,但是下一个将有更多的肉而更少的故事! 我只是觉得吸引您的参与很重要,我希望它能奏效,如果不是的话,吸取的教训对吗?
From: https://hackernoon.com/coding-a-blog-with-c-tk9p32po