2011-05-11 10 views
1

通常の外部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結果を返す必要が

+0

"target"オプションは、#outputのデータを返されたデータで置き換えるようにフォームプラグインに指示しています。私はテストのためにそれを取り除き、コールバックの成功関数に頼っています。また、URLを引用符で囲む必要があると思います。 – BZink

+0

フォームにファイルアップロードフィールドが含まれていますか? –

+0

こんにちは、アップロードフィールドはありません。大部分のフィールドは、一度投稿されたサーバー側で使用される入力タイプが隠されています。データの量を制限するクエリ文字列を回避するのがアイデアです。私はURLの周りに引用符を含め、ターゲットオプションを削除しました。どちらの場合も同じ問題が残っていました。それは成功イベントを呼び出すことさえしません。 – Kosmosniks

答えて

0

ここでは、応答データを表示する必要があります。

<div id="FormContainerdiv">.</div> 
@Html.Partial("Comment", item); 
</div> 
+0

ありがとう、私はこれが私の問題を解決できると思うし、できるだけ早くテストします。しかし、私はそれが通常のHTMLページでMVCビューではないので、呼び出すHtmlページのRazor構文に少し気になります。 – Kosmosniks

関連する問題