2011-02-14 81 views
12

這可能是一個簡單的問題,但對我來說,現在還不清楚,我必須把事情排序在我的腦海中......也許有人可以幫助我=)。 ..jQuery的ASP.NET MVC的AJAX形式3

我知道MVC帶有Ajax Helpers。 我知道有微軟的圖書館,還有jquery。 我知道,與MVC 3他們推出了不顯眼的JavaScript,它增加了一些特殊的標籤,以清潔html ...

但是,如何一起玩?

示例:我想發佈每個ajax的遠程表單(部分視圖)以向博客文章添加評論。無需將整個頁面發回。

在我的部分視圖中,我會使用Ajax.BeginForm()這是MvcAjax還是Jquery? 或者我會使用Html.BeginForm()並在表單的點擊事件上註冊類似$ .post的東西。如果JavaScript被禁用或不支持,這也將有一個純HTML的回退....

或一般來說,何時使用什麼張貼評論到博客文章?...我認爲這是正確的,我發佈到commentscontroller的創建操作,我會使用JsonModelBinder將其轉換爲模型。之後,我會返回Json並將其添加到我的評論列表中...

這是合理的爲什麼要這樣做?

回答

30

Ajax.BeginForm()這是MvcAjax還是Jquery?

默認情況下它是jQuery。您需要參考jquery.unobtrusive-ajax.js腳本才能使用。

或者我會使用Html.BeginForm()並在窗體的click事件上註冊$ .post之類的東西。

這是一種替代方案。我個人就是這麼做的。

我認爲這是正確的,我張貼到commentcontroller的創建操作,我會使用JsonModelBinder將其轉換爲模型。之後,我會回到JSON和將它添加到我的評論列表...

的JsonModelBinder已經在ASP.NET MVC 3被引入,它允許你在JSON字符串發送到控制器動作,這將是映射回視圖模型。例如,如果您有以下視圖模型:

public class PersonViewModel 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

,並採取下列行動:

public ActionResult Foo(PersonViewModel person) 
{ 
    ...  
} 

傳統的方式來調用它在AJAX是:

$.ajax({ 
    url: '@Url.Action("foo")', 
    type: 'POST', 
    data: { name: 'john', age: 20 }, 
    success: function(result) { 
     // TODO: 
    } 
}); 

和ASP。NET MVC 3,你可以發送JSON作爲將被綁定到PersonViewModel動作參數請求參數:

$.ajax({ 
    url: '@Url.Action("foo")', 
    type: 'POST', 
    contentType: 'application/json', 
    data: JSON.stringify({ name: 'john', age: 20 }), 
    success: function(result) { 
     // TODO: 
    } 
}); 
+2

`JSON.stringify`是我所需要的部分... THX! – Trev 2011-08-11 20:05:18