2013-03-29 24 views
0

我正在使用asp.net mvc4。我有一個action方法,它是一個get方法,因爲它返回一個從JavaScript/Jquery調用的mvc視圖。將json對象傳遞給獲取請求的控制器動作

JavaScript向控制器操作發出請求。我有一個我想傳遞給mvc動作的json對象。但作爲一個獲取請求,因爲我需要從中返回一個視圖,所以這很困難。

是否有可能傳遞映射到控制器操作簽名上的對象的json對象?我正在尋找圖書館,可能有所幫助,如http://benalman.com/projects/jquery-bbq-plugin/

任何提示或想法?

+0

你不能傳遞值作爲URL參數嗎?但是,您必須確保JSON字符串使用JS函數encodeURIComponent進行編碼。另外,URI的最大長度可能會阻止您使用此方法。 請注意,不應將GET方法用於可能產生副作用的操作,如創建或修改資源。 – plalx

+1

它爲什麼需要成爲一個get? (關於這個尖叫的所有內容) –

+0

所以,如果我想從基於傳入的值的操作中檢索mvc視圖並在標記中呈現視圖的內容。是否是POST的最佳方式?與GET相比,性能如何? – amateur

回答

1

你不需要任何外部API來做到這一點。所有你需要做的就是創建一個與JSON對象具有相同屬性和名稱的c#對象。 例如創建jQuery的一個對象作爲

public class MyObject{ 
    public string MyProperty1{get; set;} 
    public string Property2{get; set;} 
} 

和創建對象是正確的我假設和使用jQuery語法像
如下

$.get('@Url.Action("MyAction","MyController")', 
    {myObject: jqueryObject}, 
    function(resp){$("#myDiv").innerHTML(resp);}); 

而且在行動的情況下,使用函數聲明一樣

public ActionResult MyAction(MyObject myObject) 
{ 
    // your code here 
    return PartialView("_MyPartialView", myModelForPartialView); 
} 

順便說一句,這種方式適用於Get和Post。

+0

您可能需要將[fromBody]作爲屬性添加到方法參數中。 public ActionResult MyAction([FromBody] MyObject myObject) –

1

你可以使用類似servicestack http://www.servicestack.net/這樣的東西來處理所有事情,並且做得很好,作爲替代方案,有MVC API選項,但是servicestack在這方面更好。

我確定,如果你看看這個項目,你會從中得到很棒的想法,或者學會將你的數據驅動代碼從你的UI項目中分離出來。

相關問題