2011-05-11 41 views
1

idee將表單數據從正常的外部Html頁面發佈到另一個MVC站點控制器。然後數據處理就像使用web服務一樣。MVC ActionResult返回類型應該爲外部HTML ajaxForm發帖

$(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網站的一部分,因此我無法使用視圖或部分視圖。返回類型應該是什麼?

+0

您的「目標」選項是告訴表單插件用返回的數據替換#output中的數據。我會擺脫測試,只依靠回調成功函數。另外,我認爲你需要把你的網址放在引號中。 – BZink 2011-05-11 21:18:53

+0

您的表單中是否包含文件上傳字段? – 2011-05-11 21:22:30

+0

嗨,沒有上傳字段,大部分的字段是輸入類型隱藏的,一旦發佈就會在服務器端使用,這個想法是繞過查詢字符串,這可能會限制數據量。我已經在網址中加入了引號並刪除了目標選項。在這兩種情況下都留下了相同的問題。它甚至不稱之爲成功事件。 – Kosmosniks 2011-05-12 14:55:23

回答

0

您需要返回partialview結果:

[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); 
    } 
在給ajaxForm

你也需要設置UpdateTargetID:

@using (Ajax.BeginForm("Form", new AjaxOptions() { UpdateTargetId = "FormContainerdiv"  , OnSuccess = "$.validator.unobtrusive.parse('form');", OnComplete = "OnComplete();" })) 
在阿賈克斯形式的目標ID

你需要提及DIV ID你必須顯示響應數據。

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

謝謝,我認爲這可以解決我的問題,我會盡快測試。不過,我只是在調用Html頁面中關注Razor語法,因爲它是一個普通的Html頁面而不是MVC視圖。 – Kosmosniks 2012-01-03 10:00:38

相關問題