私がやりたいこと:
ページの読み込み時にjqueryダイアログを自動的にポップアップしてデータを入力し、それをアクションに投稿してダイアログを閉じます(アクションが成功したかどうかは関係ありません)。
ポップアップが発生するビューでは、次のようになります。
<script type="text/javascript">
$(function () {
$('#PopUpDialog').dialog(
{
modal: true,
open: function ()
{
$(this).load('@Url.Action("Subscription", "PopUp")');
},
closeOnEscape: false
}
);
$('.ui-dialog-titlebar').hide();
$('#closeId').live('click',function () {
$('#PopUpDialog').dialog('close');
return false;
}
);
$('#SubscriptionForm').submit(function () {
$("#PopUpDialog").dialog("close");
$.ajax({
url: encodeURI('@Url.Action("Subscription", "PopUp")' ),
type: this.method,
data: $(this).serialize()
})
return fase;
}
);
});
</script>
サブスクリプションビューには次のものがあります。
@using (Html.BeginForm( new { id = "SubscriptionForm" }))
{
@Html.ActionLink(Deals.Views.PopUp.SubscriptionResources.AlreadySubscribed, "", null, new { id = "closeId" })
<br />
<br />
@Deals.Views.PopUp.SubscriptionResources.FillEmail
@Html.TextBoxFor(m => Model.Email)
<input type="submit" id="subscribeId" value="@Deals.Views.PopUp.SubscriptionResources.IWantToSubscribe" />
<br />
}
これは正常に動作します。
POSTアクションは次のように定義されます。
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult Subscription(FormCollection formValues)
//public void Subscription(FormCollection formValues)
{
Deals.ViewModels.PopUpSubscriptionVM VM = new ViewModels.PopUpSubscriptionVM();
TryUpdateModel(VM);
if (!String.IsNullOrEmpty(VM.Email))
{
//do the update to the dbms
}
return Json(new { success = true });
}
問題は、投稿した後、成功メッセージが表示された空の画面が表示されることです。これは望ましくありません。私は何が間違っているのですか?