2016-09-22 18 views
0

我使用$ HTTP

var registration = { 
    userId: 23, 
    groupings: [ 
      { Id: 1, Name: 'Test Group 1', Description: 'Yo' }, 
      { Id: 4, Name: 'Test Group 4', Description: 'Er' } 
] 
} 
$http({ 
      method: 'POST', 
      url: url, 
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, 
      data: $.param({ 
       code: eventCode, 
       UserId: registration.userId 
       Groupings: registration.groupings 
      }) 
     }) 

,然後在我的動作有以下POST請求

[HttpPost] 
      public ActionResult New(string code, RegistrationVM model) 
      { 
    : 
    : 
    : 
    } 


    public class RegistrationVM 
     { 
      public int UserId {get;set;} 
      public IEnumerable<GroupingVM> Groupings { get; set; } 
    } 

public class GroupingVM{ 
    public int Id {get;set;} 
    public string Name {get;set;} 
    public string Description {get;set;} 

    public int AnotherPropertyId {get;set;} 
    public ANewClass ANewClass {get;set;} 
} 

每當帖子發生時,我會讓模型屬性反映我發佈的內容,但IEnumerable(分組)屬性除外。比方說,我在Groupings屬性中發佈了2個對象,當我進入Action時,Groupings屬性的計數爲2,但每個實例在每個對象上都有NULL或0值。我試圖弄清楚我是如何搞亂這個帖子的。

+1

不應該的參數是:$ .param({code:eventCode,model:registration}) –

+0

是的,我試過了,它沒有工作。所以,除了代碼,現在一切都是空的。 – gdubs

+0

嘗試並將字符串代碼添加到RegistrationVM類,並在控制器方法中使用一個參數。還要將代碼添加到客戶端的註冊對象中,並傳遞$ .param({model:registration}) –

回答

1

首先,讓控制器以一個對象作爲參數。將「字符串代碼」添加到RegistrationVM並刪除字符串代碼作爲參數。

然後在創建客戶端對象時執行相同操作。其次,不使用內容類型「x-www-form-urlencoded」,而是使用更適合傳遞對象的「application/json」。

之前發佈的數據,你需要data: JSON.stringify(registration)

有關詳細信息,以字符串化的OBJ,閱讀關於這個問題的意見。

相關問題