0

私の問題を説明するために、現在開発中のアプリケーション フォームのセクションの 1 つのバグに対処しようとしています。以下のスクリーンショットは、このセクションのワークフローを示しています。

ここに画像の説明を入力

この画面が表示されたセクションに最初に移動すると、ドロップダウンリストからオプションを選択し、[次へ] をクリックします。

[次へ] をクリックすると、選択したオプションのフォーム値が次のように生成されます。

ここに画像の説明を入力

オプションを変更すると問題が発生します。新しいオプション フォームの値が生成されると、前のオプションのエラーが次のように生成されます。

ここに画像の説明を入力

次または変更ボタンがクリックされたときのロジックの一部を説明するために、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 内にとどまっているようです。また、フィドラーを使用して、Web API の送信メソッドが呼び出されているかどうかを確認しました。空白も返します。

なぜこれが起こっているのか、誰にも考えがありますか?

アドバイスをいただきありがとうございます。

4

1 に答える 1

0

戻り値を変更したため、返す代わりに、バグを解決した which をreturn View()使用するようになりましたreturn RedirectToRoute()

于 2013-08-13T11:55:07.197 に答える