Comments
sql
Id (PK), PostId (FK), UserId (FK), Content, CreatedAt
使用 EF Core 进行实体映射
csharp
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int AuthorId { get; set; }
public User Author { get; set; }
}
🧩 六、常用功能实现示例
1、用户注册登录(ASP.NET Identity)
csharp
// Register
[HttpPost]
public async Task<IActionResult Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await _signInManager.SignInAsync(user, isPersistent: false);
return RedirectToAction(Index, Home);
}
AddErrors(result);
}
return View(model);
}
2、文章列表展示(控制器 + 视图)
csharp
public IActionResult Index()
{
var posts = _context.Posts
.Include(p = p.Author)
.OrderByDescending(p = p.CreatedAt)
.ToList();
return View(posts);
}
在 `Views/Blog/Index.cshtml` 中使用 Razor 渲染:
html
@foreach(var post in Model)
{
<div class=post
<h3@post.Title</h3
<p@post.Content.Substring(0, Math.Min(post.Content.Length, 200))...</p
<small作者:@post.Author.UserName | @post.CreatedAt.ToString(yyyy-MM-dd)</small
</div
}
1、单元测试
csharp
[TestClass]
public class BlogControllerTests
{
[TestMethod]
public void Index_ReturnsViewResult()
{
var controller = new BlogController(_mockRepo.Object);
var result = controller.Index() as ViewResult;
Assert.IsNotNull(result);
}
}
官方文档:https://learn.microsoft.com/zh-cn/aspnet/core/
教程网站:
Microsoft Learn
W3Schools ASP.NET
YouTube 搜索 “ASP.NET Core Tutorial”
书籍推荐:
《ASP.NET Core 入门》
《Pro ASP.NET Core MVC》 by Adam Freeman