首页 > 解决方案 > C# MVC 提交后,数据被更改

问题描述

这是一个非常奇怪的问题。我有一个网页,显示从搜索返回的每个视图模型以进行编辑。

@foreach (var item in Model.qaJobsVM) {
    @using (Html.BeginForm("EditJobAdmin", "QualityAssurance",
            FormMethod.Post, new { @class = "form-style-11", @style = "display: inline-block;" })) {

如果用户搜索工作编号,他们会正确返回每个工作编号。

    public ActionResult EditJobAdmin(int JobNumber) {
        QAService qaService = new QAService(_qaContext);
        UpdateViewModelQA updateViewModelQA = new UpdateViewModelQA();
        updateViewModelQA.qaJobsVM = qaService.GetJobsByNumber(JobNumber);
        if (updateViewModelQA.qaJobsVM == null) {              
            ModelState.AddModelError("ExceptionError", "Could not find job.");
            return View("SearchJobAdmin", null);
        } else {
            return View(updateViewModelQA);
        }
    }

如果他们更新任何表单,则数据会正确更新并再次运行搜索(以更新页面)。奇怪的是,调用了相同的搜索,返回了相同的结果(除了他们提交的更改),但所有表单都显示来自用户更新的模型。

   [HttpPost] public ActionResult EditJobAdmin(JobViewModel item) {
        var qaService = new QAService(_qaContext);
        UpdateViewModelQA updateViewModelQA = new UpdateViewModelQA();

        if (!qaService.ValidErrorNumber(item.ErrorNumber)) {
            updateViewModelQA.qaJobsVM = qaService.GetJobsByNumber(item.JobNumber);
            ModelState.AddModelError("ExceptionError", "Invalid Error Number");
            return View(updateViewModelQA);
        }
        var JobUpdated = qaService.AdminUpdateJob(item, _errorLogService, HttpContext.User.ToString());
        updateViewModelQA.qaJobsVM = qaService.GetJobsByNumber(item.JobNumber);
        ModelState.AddModelError("ExceptionError", "Success!");
        return View(updateViewModelQA);
    }

寻找工作

来自搜索作业的调试信息

提交作业的调试信息

使用图像中的调试信息加载页面后

它调用相同的函数来获取视图模型并且数据正确返回。如果我调试剃刀页面,它会显示正确的信息,但是当页面完成加载时,它会显示作为每个视图更新的记录(无论它找到多少记录)

任何帮助将不胜感激。

文本示例:我查找作业 12345。作业 12345 返回了 3 个条目。

job: 12345
comment: comment number 1
job: 12345
comment: comment number 2
job: 12345
comment: comment number 3

我用评论更新第一个返回的项目:“comment number 99” 当页面完成加载时,我得到:

job: 12345
comment: comment number 99
job: 12345
comment: comment number 99
job: 12345
comment: comment number 99

如果我搜索工作 12345,我会得到:

job: 12345
comment: comment number 99
job: 12345
comment: comment number 2
job: 12345
comment: comment number 3

标签: c#model-view-controller

解决方案


推荐阅读