2013-12-11 66 views
0

我有一個JavaScript對象,並希望在我的C#函數中使用它,但我不確定如何使用此對象。在C中使用JavaScript對象#

使用Javascript:

  $.ajax({ 
       data: data.model, 
       cache: false, 
       type: 'post', 
       url: 'Respondents/DownloadCSV', 
      }); 

通知javascript對象看起來像這樣(取自的console.log)的data.model:

[Object, Object, Object, Object, Object] 
0: Object 
1: Object 
2: Object 
3: Object 
4: Object 

裏面的0:對象

Class: "respondent clickable gradeA" 
Data: Object 
Age: "" 
City: "" 
Email: null 
Ethnicity: "" 
Gender: "" 
Id: 260619 
LastActionDate: "<span class="dn">20131008175555</span>10/8 5:55 PM" 
LastRecruiter: "Ben Miles" 
Name: "Jerry Keys" 
OwningRecruiter: "Ben Miles" 
RecruitingGroup: "Competitive Users" 
Source: "<span style="display:none;" >Database</span><i class="tipN icon-tasks" original-title="Database"></i>" 
State: "" 
Status: "<span style="display:none;" >Completed</span><i class="tipN icon-check" original-title="Completed"></i>" 
class: "respondent clickable gradeA" 
created: 1386790341009 
url: "/Projects/644/Respondents/260619/Overview" 

我不確定我的C#方法會是什麼樣子?我會期待類似的東西?

public ActionResult DownloadCSV(object model) 
{ 
} 

我想要做的就是在控制器方法中使用JavaScript中的數據。

回答

1

只要您的模型與其格式的JSON匹配,ASP.NET MVC就提供了從JSON表示法到動作的自動模型綁定。

所以,作爲一個例子,如果你正在發佈關於一個人的一些信息,你的JSON應該是這樣的......

{ "FirstName": "John", "LastName": "Doe" } 

這當然可以,讓複雜得多,但是,我我只是做這個例子。

現在,在您的Action中,您希望創建一個符合您對JavaScript的期望的POCO,以便它可以正確綁定。這個對象應該是這樣的:

public class Person { 
    public string FirstName { get; set; } 

    public string LastName { get; set; } 
} 

然後,在你的行動,你這樣做......

public class MyController { 

    [HttpPost] 
    public ActionResult MyAction(Person model) { 
    // Do what you need to here. 
    } 
} 

只要你的JSON與模型對齊,綁定會自動發生。

請注意,如果您需要將JavaScript對象轉換爲JSON,那麼您可以使用JSON.stringify(your_object)這樣做,並將其傳遞給ajax調用的數據參數。

0

試試這個:

$.ajax({ 
    data: JSON.stringify(data.model), 
    cache: false, 
    type: 'POST', 
    url: 'Respondents/DownloadCSV', 
    dataType: 'json', 
    contentType: 'application/json; charset=utf-8' 
}); 

這應該與任意深度的任何對象工作。

0

您可以創建一個屬性的類,你的JSON文件有:

public class MyModel 
{ 
    //properties 
} 

然後,改變你的行動採取的這些列表:

public ActionResult DownloadCSV(IEnumerable<MyModel> model) 
{ 

} 

串行器會照顧映射,但有幾點擔憂:

LastActionDate:「2013100817555510/8 5:55 PM」

你會希望在實際的日期,而不是HTML表示通過,除非你想讓你的所有類的屬性是string