如何解决如果 [post] null 显示错误 .Net Core 存储库模式
显示 Title == null 的最佳方式是什么? 我正在使用 .Net Core 并使用存储库模式,当我的文章的 Title 值为 null 时,我无法显示错误表。我需要为这个方法做什么? 我曾尝试使用这样的代码,但仍然失败,也许我需要使用 Repository?
查看
<div class="row">
<div class="col-lg-9 col-md-12">
<div class="card card-small mb-3">
<div class="card-body">
<form asp-action="SubmitArticle" id="SubmitForm" class="add-new-post">
<input asp-for="Article.Author" hidden class="form-control" readonly value="@Model.UserFullName"/>
<partial name="_StatusMessage" model="@ViewData["Message"]"/>
<input asp-for="Article.Title" class="form-control form-control-lg mb-3" type="text" placeholder="Your Post Title">
<div class="form-group row">
<div class="col-2">
<label asp-for="Article.FacultyId" class="col-form-label"></label>
</div>
<div class="col-5">
<select asp-for="@Model.Article.FacultyId" asp-items="@Model.Faculties.Select(f => new SelectListItem() {Text = f.FacultyName.ToString(),Value = f.Id.ToString()})" class="form-control"></select>
</div>
</div>
解决方法
您可以像下面这样更改您的存储库:
public ArticleFacultyViewModel SubmitArticle(ArticleFacultyViewModel articleFacultyViewModel)
{
var doesArticleExists = _dbContext.Articles.Include(a => a.Faculty)
.Where(a => a.Title == articleFacultyViewModel.Article.Title && a.Faculty.Id == articleFacultyViewModel.Article.FacultyId);
if (articleFacultyViewModel.Article.Title == null)
{
return articleFacultyViewModel;
}
else
{
_dbContext.Articles.Add(articleFacultyViewModel.Article);
_dbContext.SaveChanges();
return null;
}
var model = new ArticleFacultyViewModel()
{
Article = articleFacultyViewModel.Article,Faculties = _dbContext.Faculties.ToList(),StatusMessage = "Error: Article already exists in " + _dbContext.Faculties.SingleOrDefault(f => f.Id == articleFacultyViewModel.Article.FacultyId).FacultyName.ToString()
};
return model;
}
然后在你的方法中:
public IActionResult SubmitArticle(ArticleFacultyViewModel articleFacultyViewModel)
{
var articleSubmit = _studentRepository.SubmitArticle(articleFacultyViewModel);
if (articleSubmit == articleFacultyViewModel)
{
ModelState.AddModelError("Article.Title","Please Enter Your Title");
}
if (ModelState.IsValid)
{
if (articleSubmit == null)
{
return RedirectToAction(nameof(Index));
}
ViewData["Message"] = articleSubmit.StatusMessage;
}
return View(articleSubmit);
}
在您看来:
<input asp-for="Article.Title" class="form-control form-control-lg mb-3" type="text" placeholder="Your Post Title">
<span asp-validation-for="Article.Title" class="text-danger"></span>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。