送信ボタンを押しても、フォームが常に送信されるとは限りません。
私のフォームには送信ボタンが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> </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);
}