0

当我点击提交按钮时,我的表单并不总是提交。

在我的表单上,我有一个提交按钮。当我第一次点击按钮时,表单将提交。但是当出现验证错误时,会显示错误。但是当我修复该错误并再次按下提交按钮时,表单没有提交。如果您以“正常”速度工作,就会发生这种情况;如果你做的一切都很慢,那么表单将提交。

在“正常速度”模式下,我在 FireBug 中看到有对服务器的请求,但我在代码中的断点从未被命中!所以我保持在同一页面上,没有任何反应。当我单击多次(5-10)或等待几秒钟然后单击提交按钮时,提交将到达我的代码。

我将 MVC4 与 .NET 4.5 框架一起使用。

我希望有人可以帮助我解决这个问题..

编辑:

这是我正在谈论的代码。

我的 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类。这BaseController有一个 trribute ,OutputCache持续时间设置为 10 秒。删除此属性解决了我的问题。

于 2012-10-17T12:28:56.130 回答