私はフォームを持っています:
using (Html.BeginForm("SubmitWork", "ActivitySubmission", FormMethod.Post, new { @class = "activityForm", Name = "pba-activity-form-" + item.ActivityTemplateId, Id = "pba-activity-form-" + item.ActivityTemplateId })){
//Some stuff here
<input type="submit" ... />
}
POSTされると、コードが実際にコントローラーに到達することはありません。フォームは jquery.form ( http://www.malsup.com/jquery/form/ ) を使用します。ジャバスクリプト:
function setOptions(formData, jqForm, options){
var parts = $(jqForm).prop("id").split("-");
var activityTemplateId = parts[3];
var resultsDivId = "#activityResults" + activityTemplateId;
var msg = '<div style="height:40px; margin-right:20px; float:left;"><img src="/Content/loadingSpinner.gif" /></div>' +
'Saving your work...<div style="clear:both;"></div>';
$(resultsDivId).html(msg).slideDown();
}
$(".activityForm").ajaxForm({
type: 'POST',
beforeSubmit: setOptions,
success: function (data) {
if ($(this).valid) {
var x = data.message;
var y = data.status;
var z = data.data;
}
}
});
setOptions 関数は基本的に、フォーム内に「読み込み中」の div をレンダリングして、何かが起こっていることをユーザーに知らせるためのものです。
コードが実行され、送信ボタンがクリックされると、実際の投稿まですべてが正常に実行されます。ポストはコントローラーにヒットすることはなく (つまり、デバッグ モードでは、壊れることはなく、コードが実行されないなど)、単に「成功」として返されます。返されると、変数「data」にはページ全体の HTML の文字列が含まれています。
このような問題を私が書き留めたものだけで診断するのは難しいことはわかっていますが、何が起こっているのかについて誰かアイデアを教えてもらえますか? 404 や舞台裏で何かが起こっている、または何か問題があるという兆候はまったく得られません....
コントローラ メソッドは次のようになります。
[HttpPost]
public ActionResult SubmitWork(long activityTemplateId, long studentProjectId)
{
//stuff
return Json(someDataResults, JsonRequestBehavior.AllowGet);
}