MVCで送信されたフォームに問題があります。 2つの異なる点からロードすることができ、1つは送信し、2つ目はポストバックしません。MVCフォームがJQueryモーダルから送信されない
JQueryモーダルダイアログの内部にロードされた部分図です。ホームページからモーダルをトリガーすると、それは正常に送信されます。
フォームを表示するために2番目のモーダルの起動を許可するタスクをユーザーが見つけられるように起動できる別のモーダルがあります。この同じフォームが送信されても、コントローラへのポストはトリガされません。
$(document).ready(function() {
var title =$(this).attr("data-dialog-title");
$(".NoteDialog").live("click", function (e) {
e.preventDefault();
if ($(this).attr("data-dialog-title") != "Find Task")
{
if ($(this).attr("data-dialog-id") == "deleteDialog") {
$("<div id='formModal'><img src='../../Content/images/ajax-loader.gif' /></div>")
.addClass("dialog")
.attr("id", $(this).attr("data-dialog-id"))
.appendTo("body")
.dialog({
width: 300,
position: [600, 50],
title: $(this).attr("data-dialog-title"),
close: function() { $(this).remove() },
modal: true,
buttons: {
"Delete": function() {
$("#form0").submit();
$(this).dialog("close");
},
Cancel: function() {
$(this).dialog("close");
}
}
})
.load(this.href);
}
else
{
$("<div id='formModal'><img src='../../Content/images/ajax-loader.gif' /></div>")
.addClass("dialog")
.attr("id", $(this).attr("data-dialog-id"))
.appendTo("body")
.dialog({
width: 800,
position: [300, 50],
title: $(this).attr("data-dialog-title"),
close: function() { $(this).remove() },
modal: true,
buttons: {
"Save": function() {
alert('Handler for .submit() called.');
$("#form0").submit();
$(this).dialog("close");
},
Cancel: function() {
$(this).dialog("close");
}
}
})
.load(this.href);
}
}
else
{
$("<div id='formModal'><img src='../../Content/images/ajax-loader.gif' /></div>")
.addClass("dialog")
.attr("id", $(this).attr("data-dialog-id"))
.appendTo("body")
.dialog({
width: 860,
position: [300, 50],
title: $(this).attr("data-dialog-title"),
close: function() { $(this).remove() },
modal: true
})
.load(this.href);
}
});
$(".close").live("click", function (e) {
e.preventDefault();
$(this).closest(".dialog").dialog("close");
});
});
それは両方のモーダルダイアログを起動するために使用されます。
はここでjQueryのスクリプトです。アラートが発生し、クローズダイアログも表示されるので、スクリプトは処理中です。送信しないだけです。
部分図が@using (Ajax.BeginForm("AddTime","TimeTracker", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "TimeForm" }))
を使用してフォームを作成し、両方の時間を作らformタグは次のとおりです。
<form action="/TimeTracker/AddTime?AddID=183336&TypeID=1&_=1328710484230" data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#TimeForm" id="form0" method="post">
は提出する別の方法はありますか? 私は、機能していたフォーム自体の一部としてボタンを使用しようとしましたが、別の問題がありました。キャンセルボタンはモーダルを正しく閉じることができず、その後の起動時に複数のモーダルがトリガーされます。それが是正できれば、私はこの非掲示問題を回避することができました。
アップデート: FirebugのシナリオをXHRタブで実行しているときに、問題点を発見しました。フォームがFindTaskメソッドにポストするように見えますが、これは最初のモーダルを処理するものです。それは、ホームページから呼び出されたときに起こるものであるAddTimeメソッドへのポストする必要があります。
なぜAJAXはフォームタグで指定されたアクションに投稿しないのですか?
また、送信時にAddTimeフォームからフォームフィールドではなく、FindTaskモーダルに使用されるポストを送信しています。