こんにちは、私は学校プロジェクトのためにMicrosoft asp.net MVC Core 2.0を使用して簡単なブログを行い、記事のCRUD操作を実装する際に問題が発生しました。より正確には、私は記事の編集方法にのみ問題があります。 はここに私のコントローラメソッド ASP.net Core MVC 2.0 FormEditModelをビューからコントローラに渡す
[HttpPost]
[ValidateModelState]
public async Task<IActionResult> EditArticle(ArticleEditServiceModel parameter)
{
parameter.Title = this.html.Sanitize(parameter.Title);
parameter.Content = this.html.Sanitize(parameter.Content);
//var user = this.userManager.GetUserName(User.Identity.Name)
await this.articles.EditAsync(parameter.Id, parameter.Title, parameter.Content);
return RedirectToAction(nameof(Index));
}
されており、ここで私のサービスである "EditAsync" 方法:
public async Task<bool> EditAsync(int id, string title, string content)
{
var article = await this.db.Articles.Where(a => a.Id == id).FirstOrDefaultAsync();
if (article == null)
{
return false;
}
article.Title = title;
article.Content = content;
await this.db.SaveChangesAsync();
return true;
}
ビュー:
@model ArticleEditServiceModel
@{
ViewData["Title"] = "Edit Article";
}
<h2>@ViewData["Title"]</h2>
<div class="row">
<div class="col-md-4">
<form asp-controller="Article" asp-action="EditArticle" [email protected] method="post">
<div class="form-group">
<label asp-for="Title"></label>
<input asp-for="Title" class="form-control" />
<span asp-validation-for="Title" class="form-text text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Content"></label>
<input asp-for="Content" required class="form-control" />
<span asp-validation-for="Content" class="form-text text-danger"></span>
</div>
<a asp-controller="Article" asp-action="Index" class="btn btn-default">Back</a>
<button type="submit" formmethod="post" class="btn btn-success">Edit Article</button>
</form>
</div>
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
}
それはIdで正しいの記事を見つけていますテキストを編集できる2つの入力フィールドがありますが、投稿ボタンをクリックすると、記事に適用される変更はありません。私はデバッグを試み、ビューがコントローラーポストメソッドにヌルモデルを送信することを発見しました。私は何がコードに間違っているかを見つけることができないので、私は経験豊富な開発者に入力を求めるべきであると考えました。