0

我正在尝试处理我目前正在开发的申请表的其中一个部分的错误,以解释我的问题,下面的屏幕截图显示了此部分的工作流程:

在此处输入图像描述

当您第一次导航到显示此屏幕的部分时,您然后从下拉列表中选择一个选项并单击下一步。

当您单击下一步时,将生成所选选项的表单值,如下所示:

在此处输入图像描述

当您更改选项时出现问题,当生成新的选项表单值时,正在生成前一个选项的错误,如下所示:

在此处输入图像描述

为了解释单击下一个或更改按钮时的一些逻辑,它会在actionresult中的相应applycontroller中回发一个actionresult,它将选项值发布到一个将数据保存到数据库的web api下面的代码正在执行这个任务:

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> AdmissionsTest(AdmissionsTestViewModel model, ApplyService service, string programmeDesc, int? programmeId, FormCollection formCollection)
    {
        Guid applicationId = (Guid)TempData["ApplicationId"];

        TempData["ApplicationId"] = applicationId;

        model.ApplicationValidations = (ICollection<ApplicationValidation>)TempData["ApplicationValidations"];

        TempData["ApplicationValidations"] = model.ApplicationValidations;

        model.ApplicationProgrammeDetails = DependencyResolver.Current.GetService<ApplicationProgrammeDetailsViewModel>();

        if (programmeId != null)
        {
            Programme programme = service.GetProgramme(model.ProgrammeId);

            model.ApplicationProgrammeDetails.ProgrammeDesc = programme.ProgrammeDesc;
        }
        else
        {
            model.ApplicationProgrammeDetails.ProgrammeDesc = programmeDesc;
        }

        foreach (var item in formCollection.AllKeys)
        {
            if ((model.AdmissionsTestOptionId == null) && (item.ToLowerInvariant().StartsWith("submitbuttonnext") || (item.ToLowerInvariant().StartsWith("submitbuttonchange"))))
            {
                model.ApplicationId = applicationId;

                model.NavButton = "10";

                await _client.PostAsJsonAsync("api/ApplicationAdmissionsTestDetail/UpdateApplicationAdmissionsTestDetail", model)
                .ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode());

                return View("AdmissionsTest", model);
            }
            if ((model.AdmissionsTestOptionId == 1) && (item.ToLowerInvariant().StartsWith("submitbuttonnext") || (item.ToLowerInvariant().StartsWith("submitbuttonchange"))))
            {
                model.ApplicationId = applicationId;

                model.NavButton = "10";

                await _client.PostAsJsonAsync("api/ApplicationAdmissionsTestDetail/UpdateApplicationAdmissionsTestDetail", model)
                .ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode());

                return View("AdmissionsTest", model);
            }
            if ((model.AdmissionsTestOptionId == 2) && (item.ToLowerInvariant().StartsWith("submitbuttonnext") || (item.ToLowerInvariant().StartsWith("submitbuttonchange"))))
            {
                model.ApplicationId = applicationId;

                model.NavButton = "10";

                await _client.PostAsJsonAsync("api/ApplicationAdmissionsTestDetail/UpdateApplicationAdmissionsTestDetail", model)
                .ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode());

                return View("AdmissionsTest", model);
            }
            if ((model.AdmissionsTestOptionId == 3) && (item.ToLowerInvariant().StartsWith("submitbuttonnext")))
            {
                model.ApplicationId = applicationId;

                await _client.PostAsJsonAsync("api/ApplicationAdmissionsTestDetail/UpdateApplicationAdmissionsTestDetail", model)
                .ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode());

                if (model.NavButton == null) { model.NavButton = "11"; }
                return NavigateToStage(model.NavButton);
            }
            if ((model.AdmissionsTestOptionId == 3) && (item.ToLowerInvariant().StartsWith("submitbuttonchange")))
            {
                model.ApplicationId = applicationId;

                model.NavButton = "10";

                await _client.PostAsJsonAsync("api/ApplicationAdmissionsTestDetail/UpdateApplicationAdmissionsTestDetail", model)
                .ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode());

                return View("AdmissionsTest", model);
            }
        }

         //save

        string dateGMATTaken = model.DateGMATTakenDay + "/" + model.DateGMATTakenMonth + "/" + model.DateGMATTakenYear;

        string dateGRETaken = model.DateGRETakenDay + "/" + model.DateGRETakenMonth + "/" + model.DateGRETakenYear;

        DateTime dateOfGMATTestTaken;

        DateTime dateOfGRETestTaken;

        if (DateTime.TryParse(dateGMATTaken, out dateOfGMATTestTaken))
        {
            model.GMATDateTaken = dateOfGMATTestTaken;
        }
        else
        {
            model.GMATDateTaken = null;
        }

        if (DateTime.TryParse(dateGRETaken, out dateOfGRETestTaken))
        {
            model.GREDateTaken = dateOfGRETestTaken;
        }
        else
        {
            model.GREDateTaken = null;
        }

        model.ApplicationId = applicationId;

        await _client.PostAsJsonAsync("api/ApplicationAdmissionsTestDetail/UpdateApplicationAdmissionsTestDetail", model)
           .ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode());

        //redirect based on submit

        if (model.NavButton == null) { model.NavButton = "11"; }
        return NavigateToStage(model.NavButton);
    }

我已经使用断点测试了 actionresult 以查看它是否可能会进入最终提交操作,但到目前为止它似乎停留在 actionresult 内我还使用 fiddler 来查看 web api 上的提交方法是否被调用也返回空白。

有没有人知道为什么会发生这种情况?

提前感谢您的建议。

4

1 回答 1

0

已经修改了返回值,所以return View()他们现在使用的不是返回,而是return RedirectToRoute()解决了这个错误

于 2013-08-13T11:55:07.197 回答