コントロールへの Ajax.BeginForm リダイレクト
Razor を使用して MVC 4 アプリケーションを作成しました。次のコードは、フォームでデータを送信するために使用されます。
@using (Ajax.BeginForm("Topup", "Card", new AjaxOptions { HttpMethod = "POST", OnBegin = "Submitting_Form", OnComplete = "Submitted_Form", UpdateTargetId = "SendStatus"}, new { id="FormSubmit"}))
{
@Html.ValidationSummary()
<ul data-role="listview" data-inset="true">
<li data-role="list-divider">Mobile Topup</li>
<li data-role="fieldcontain">
@Html.LabelFor(m => m.MobileNo)
@Html.TextBoxFor(m => m.MobileNo)
</li>
<li data-role="fieldcontain">
<label class="ui-input-text" id="SendStatus">Test</label>
</li>
<li data-role="fieldcontain">
<input type="submit" value="Topup" />
<input type="button" value="Reset" onclick="this.form.reset(); $('#TopupDate').val(Current_Date('d-m-y'));" />
</li>
<!--<li data-role="list-divider">Navigation</li>-->
<li>@Html.ActionLink("Home", "Index", "Home")</li>
</ul>
}
コントローラー上
//[AllowAnonymous]
[HttpPost]
public ActionResult Topup(TopupModel model)
{
try {
}
catch (Exception ExC) {
Bug.Bug BG = new Bug.Bug();
BG.Send_Bug_Message(ExC);
}
//return PartialView("PartialTopup", model);
return Content("Success");
}
ただし、送信後、ページは自動的にコントローラーにリダイレクトされます (たとえば、http://localhost:43289/Card/Topup
文字列「未定義」
なぜこうなった?私はすでに次のライブラリに含まれています。
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="/Scripts/MicrosoftAjax.debug.js"></script>
<script src="/Scripts/MicrosoftMvcAjax.debug.js"></script>
Firebug で調査したところ、いくつかの手がかりが得られました。
POST http://localhost:43289/Card/Topup?Length=4 200 OK 114ms jquery-2.0.3.js (line 7845)
POST http://localhost:43289/Card/Topup?Length=4 200 OK 113ms jquery-2.0.3.js (line 7845)
それは2回起こりました。なんで?この問題を解決するために私を助けてください。