如何通过表单传递收集数据?

时间:2019-08-20 12:08:24

标签: c# asp.net-core-mvc

我正在.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" />

我会把这一切弄错吗?我一直在做什么吗?我可以改善什么?

感谢您抽出宝贵的时间来帮助我。

1 个答案:

答案 0 :(得分:0)

正如克里斯·普拉特(Chris Pratt)在对我的线程的评论中指出的那样,您不应将任何数据发布到服务器,您不希望用户能够进行更改。因此,以这种方式使用集合的情况是无效的。要将集合发布到服务器,请在输入字段中将其写出并发布。

相关问题