点击提交按钮后,我的表单并不总是已提交。
在我的表单上,我有一个提交按钮。当我第一次按下按钮时,表单将提交。但是当出现验证错误时,会显示错误。但是,当我修复该错误并再次按下提交按钮时,表单未提交。如果你以“正常”速度工作,就会发生这种情况;如果你做的一切都很慢,那么表格就会提交。
在“正常速度”模式下,我在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> </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> </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);
}
答案 0 :(得分:1)
我们终于明白了。
我们所有的控制器都继承自定义的BaseController
类。这个BaseController
在OutputCache
上有一个三分法,持续时间设置为10秒。删除此属性修复了我的问题。