我正在.net core mvc中编写一个简单的应用程序。 问题在于按视图加载相关数据。第一次加载视图时,效果会非常出色,我通过实体框架(包括扩展功能)将数据附加到视图上。
此代码位于GET上,仅显示要更新的项目时,使用当前值填充字段。
public IActionResult Edit(long id)
{
ServiceResult<LectureDTO> result = _lectureService.GetById(id, new LectureIncludeOptions(true));
LectureEditViewModel model = new LectureEditViewModel
{
Lecture = new LectureEditDTO(result.Entity)
};
if (!result.Success)
{
model.HandleResult(result, ModelState);
}
return View(model);
}
第二次提交POST时,如果我提交的模型无效或更新结果不正确,我想将错误附加到模型上并将其发送到视图(通过HandleResult方法)。
public IActionResult Edit(LectureEditViewModel model)
{
if (!ModelState.IsValid)
{
ServiceResult<LectureDTO> getResult = _lectureService.GetById(model.Lecture.Id, new LectureIncludeOptions(true));
if (!getResult.Success)
{
model.HandleResult(getResult, ModelState);
}
model.Lecture = new LectureEditDTO(getResult.Entity);
return View(model);
}
ServiceResult<LectureDTO> result = _lectureService.Update(model.Lecture, User.FindFirstValue(ClaimTypes.NameIdentifier));
if (result.Success)
{
model = new LectureEditViewModel()
{
Lecture = new LectureEditDTO(result.Entity)
};
}
model.HandleResult(result, ModelState);
return View(model);
}
这是我目前在不良编辑时加载关系数据的方式。我认为如果我以前在模型中已经有它,只是显示编辑表单,那是浪费的。有没有办法按模型传递这些数据?
我已经在表单中尝试过此方法来传递集合,但是每次调试此控制器动作时,其值都是空的。
<input asp-for="Lecture.Lecturers" value="@Model.Lecture.Lecturers" class="form-control" type="hidden" />
我会把这一切弄错吗?我一直在做什么吗?我可以改善什么?
感谢您抽出宝贵的时间来帮助我。
答案 0 :(得分:0)
正如克里斯·普拉特(Chris Pratt)在对我的线程的评论中指出的那样,您不应将任何数据发布到服务器,您不希望用户能够进行更改。因此,以这种方式使用集合的情况是无效的。要将集合发布到服务器,请在输入字段中将其写出并发布。