为什么我的提交按钮没有提交表格?

时间:2012-10-12 07:00:20

标签: c# html asp.net-mvc

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

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

在“正常速度”模式下,我在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);
    }

1 个答案:

答案 0 :(得分:1)

我们终于明白了。

我们所有的控制器都继承自定义的BaseController类。这个BaseControllerOutputCache上有一个三分法,持续时间设置为10秒。删除此属性修复了我的问题。