【发布时间】:2017-12-09 12:20:20
【问题描述】:
您好,我正在为一个学校项目使用 Microsoft asp.net MVC Core 2.0 做一个简单的博客,并且在为 Articles 实施 CRUD 操作时遇到了问题。更准确地说,我只有编辑文章方法有问题。 这是我的控制器方法
[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" asp-route-parameter=@Model 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 找到正确的文章,并为我提供了两个输入字段,我可以在其中编辑文本,但是当我单击提交按钮时,文章没有应用任何更改。我尝试调试并发现视图将空模型发送到控制器 post 方法。我似乎找不到代码有什么问题,所以我想我应该向更有经验的开发人员征求意见。
【问题讨论】:
标签: c# asp.net-mvc controller asp.net-core-mvc