0

送信ボタンを押しても、フォームが常に送信されるとは限りません。

私のフォームには送信ボタンが1つあります。最初にボタンを押すと、フォームが送信されます。ただし、検証エラーがある場合は、エラーが表示されます。しかし、そのエラーを修正して送信ボタンをもう一度押すと、フォームは送信されません。これは、「通常の」速度で作業している場合に発生します。すべてを非常に遅く行うと、フォームが送信されます。

「通常の速度」モードでは、FireBugでサーバーへのリクエストがあることがわかりますが、コードのブレークポイントにヒットすることはありません。だから私は同じページにとどまり、何も起こりません。複数回クリックするか(5-10)、数秒待ってから送信ボタンをクリックすると、送信は私のコードに到達します。

.NET4.5フレームワークでMVC4を使用しています。

誰かがこれを手伝ってくれることを願っています。

編集:

これは私が話しているコードです。

私のhtml(かみそり付き)コード:

<div id="content" class="boxBorder">
    <form method="post" action="/Import/ProcessStep" @(Model.UploadFiles ? "enctype=multipart/form-data" : "") id="wizardForm">
        <table id="detailsTable" width="550" cellspacing="0" border="0">
            <thead>
                <tr>
                    <th class="first">Importwizard
                    </th>
                </tr>
                <tr>
                    <th></th>
                </tr>
            </thead>
            <tfoot>
                <tr>
                    <td></td>
                </tr>
            </tfoot>
            <tbody>
                <tr>
                    <td>&nbsp;</td>
                </tr>
                <tr>
                    <td>
                        <div id="ImportProgressBar">
                            <ul>
                                @foreach (var step in Model.StepNames)
                                { 
                                    <li>
                                        <div class="WizardProgressStep">
                                            <img src="@step.Value" class="ProgressStepImage" />
                                            <br />
                                            <span>@step.Key</span>
                                        </div>
                                    </li>
                                }
                            </ul>
                        </div>
                        <div id="StepTitle">
                            @Model.StepTitle
                            <hr />
                        </div>
                        <div id="StepContent">
                            @RenderBody()
                        </div>
                    </td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                </tr>
                <tr>
                    <td>
                        <div id="WizardNavigationBox">
                            @if (Model.HasPreviousButton)
                            {
                                <input type="submit" name="PreviousStep" id="PreviousStep" value="Vorige" class="button icon add" />
                            }

                            @if (Model.HasNextButton)
                            {
                                <input type="submit" name="NextStep" id="NextStep" value="Volgende" class="button icon add saveButton" />
                            }
                        </div>
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
</div>

私のコントローラー:

    [HttpPost]
    public ActionResult ProcessStep(FormCollection formCollection)
    {
        WebMediator mediator = new WebMediator();

        ViewResult newStep;
        GenericWizardViewModel viewModel;

        if (formCollection["NextStep"] != null)
        {
            ValidateStep(formCollection);
            if (ModelState.IsValid)
            {
                mediator.ProcessStep(formCollection);

                newStep = mediator.GetNextStep();
            }
            else
            {
                IWizardStep currentStep = mediator.GetCurrentStep();
                viewModel = mediator.CreateViewModel(currentStep);

                return this.RazorView(currentStep.StepName, viewModel);
            }
        }
        else
        {
            newStep = mediator.GetPreviousStep();
        }

        viewModel = newStep.Model as GenericWizardViewModel;

        return this.RazorView(newStep.ViewName, viewModel);
    }
4

1 に答える 1

1

私たちはついにそれを理解しました。

BaseControllerすべてのコントローラーはカスタムクラスを継承します。これには、持続時間が10秒に設定されBaseControllerたトリビュートがありました。OutputCacheこの属性を削除すると、問題が修正されました。

于 2012-10-17T12:28:56.130 に答える