通常の外部HTMLページから別のMVCサイトコントローラにフォームデータをポストすることです。その後、データはWebサービスを使用した場合とほとんど同じように処理されます。外部HTML ajaxFormポストのMVC ActionResult戻り値タイプは何ですか?
$(document).ready(function() {
var options = {
target: '#output',
success: function(data){ alert('test success'); },
url: http://localhost:57232/Services/SendFormData,
dataType: json
};
$('form').ajaxForm(options);
});
ActionResultは、FormCollectionオブジェクトでデータを正しく受け取ります。
[HttpPost]
public ActionResult SendFormData(FormCollection collection)
{
string s = string.Empty;
return Json(new { Success = true, Message = "Message!" }, JsonRequestBehavior.AllowGet);
}
この時点で成功結果が返されますが、それはIEが成功コールバック関数を呼び出すのではなく、返されたバイトを保存したり、開こうとし、この場合には外部のフォーム私のブラウザになったとき。
このページは外部ページであり、MVCサイトの一部ではないため、ビューまたはパーシャルビューを使用することはできません。戻り値の型は何ですか?あなたがUpdateTargetIDを設定する必要がAjaxFormでも
[HttpPost]
public ActionResult Form(Comment feedback)
{
if (feedback != null)
{
feedback.CommentedOn = DateTime.Now;
feedback.CommentId += 1;
if (ModelState.IsValid)
{
BlogPost blogpost = db.BlogPosts.Find(feedback.BlogId);
if (blogpost != null)
blogpost.NoofComments += 1;
db.Entry(blogpost).State = EntityState.Modified;
db.Entry(feedback).State = EntityState.Modified;
db.Comments.Add(feedback);
db.SaveChanges();
return PartialView("CommentSuccess", feedback);
}
}
return PartialView("Comment", feedback);
}
:あなたはdivのIDを言及する必要がAjaxのフォームのするtargetIdで
@using (Ajax.BeginForm("Form", new AjaxOptions() { UpdateTargetId = "FormContainerdiv" , OnSuccess = "$.validator.unobtrusive.parse('form');", OnComplete = "OnComplete();" }))
あなたはpartialview結果を返す必要が
"target"オプションは、#outputのデータを返されたデータで置き換えるようにフォームプラグインに指示しています。私はテストのためにそれを取り除き、コールバックの成功関数に頼っています。また、URLを引用符で囲む必要があると思います。 – BZink
フォームにファイルアップロードフィールドが含まれていますか? –
こんにちは、アップロードフィールドはありません。大部分のフィールドは、一度投稿されたサーバー側で使用される入力タイプが隠されています。データの量を制限するクエリ文字列を回避するのがアイデアです。私はURLの周りに引用符を含め、ターゲットオプションを削除しました。どちらの場合も同じ問題が残っていました。それは成功イベントを呼び出すことさえしません。 – Kosmosniks