今天來做點輕鬆的,算是點複習~
目標:
1.最好編輯功能
步驟:
1.前端的code
@using Application.Services.ArticleService.Models
@model UpdateArticleViewModel
<form method="post">
<div class="form-group">
<input asp-for="Id" class="form-control" hidden/>
標題:
<input asp-for="Title" class="form-control"/>
是否停用:
<input asp-for="IsDelete" type="checkbox" class="form-check-input"/>
<textarea asp-for="ArticleContent" class="form-control" id="editor" style="width:700px;margin-right:auto;margin-left:auto;">@Model.ArticleContent</textarea>
</div>
<button asp-controller="Article" asp-action="UpdateArticle" type="submit">Send</button>
</form>
@section Scripts {
<script src="~/ckeditor6/build/ckeditor.js"></script>
<script>
// ckEdit 5
ClassicEditor
.create( document.querySelector( '#editor' ) , {
ckfinder: {
removePlugins: [ 'ImageResize' ,'ImageStyle' ,'ImageToolbar' ],
uploadUrl: '/Article/Uploads?command=QuickUpload&type=Files&responseType=json'
}
})
.catch( error => {
console.error( error );
});
</script>
}
這邊需要注意的是,很多軟體系統公司,其實沒有所謂的刪除功能,不會真的把這一筆資料刪掉,刪除功能只是把這筆資料狀態改掉。我們的畫面也設這了這一個開關。
2.後端程式碼
Interface 請自行加上,這邊就不再多貼程式碼。
這邊只附上實作的程式碼。
public async Task UpdateArticle(UpdateArticleViewModel model)
{
GetInsertContentImages(model.ArticleContent);
var a = await _db.Articles.Where(x => x.Id == model.Id).FirstOrDefaultAsync();
if (a is not null)
{
a.Title = model.Title;
a.ArticleContent = model.ArticleContent;
a.IsDelete = model.IsDelete;
_db.Articles.Update(a);
await _db.SaveChangesAsync();
}
}
這樣子應該就可以編輯拉~
明天是另一個新的重點,就是登入系統。