2013-03-10 83 views
3

我一直在MVC現在擺弄相當長的一段時間,我感興趣的是建立一個小型應用程序,記錄下一個CD所有的CD-內容。我現在的主要障礙是如何將內容列表與其他屬性值一起傳遞給Cd.class?發佈通過Ajax複雜對象,以MVC

public class Cd 
{ 
    public int CdId { get; set; } 
    public string Description { get; set; } 
    public virtual ICollection<Content> Contents { get; set; } 
} 

public class Content 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string ContentType { get; set; } 
} 

查看:

$.ajax({ 
url: '/cd/addCd', 
type: 'POST', 
data:$('form').serialize() 
    }); 

@using(Html.BeginForm()){ 
@Html.LabelFor(x=>x.CdId) 
@Html.TextBoxFor(x=>x.CdId) <br/> 
@Html.LabelFor(x=>x.Description) 
@Html.TextBoxFor(x=>x.Description)<br /> 
<input type="submit" value="Submit" id="submit"/> 

}

請大家注意,CDID和說明值由AJAX的序列化功能已經通過了 - 只有目錄的屬性是一個我m無法理解主意

更新

我解決我的查詢通過創建序列化的數據發送到控制器的AJAX代碼片段:

$.ajax({ 
      type: 'POST', 
      url: 'http://localhost:54004/Cd/AddCd', 
      data: JSON.stringify(formData), 
      contentType:'application/json;charset=utf-8' 
     }) 
     .success(function() { }) 

用下面FORMDATA OBJ:

var formData = { 
     'Description': "Learning Visual Studio 2012", 
     'CdId': 1, 
     'Contents': [{ "Id": 1, "Name": "Video #1", "ContentType": "Mp4" }, { "Id": 2, "Name": "Video #2", "ContentType": "Mp4" }] 
    }; 

現在控制器正在接收全設置Cd實體值及其內容。 希望這對未來的某個人有用。

+0

好工作。我知道你去了哪裏。 – 2013-03-12 16:27:33

回答

1

達到你想要的最好的辦法是用Ajax.BeginForm

刪除jQuery和更換您HTML.BeginForm
@using(Ajax.BeginForm()){ 
@Html.LabelFor(x=>x.CdId) 
@Html.TextBoxFor(x=>x.CdId) <br/> 
@Html.LabelFor(x=>x.Description) 
@Html.TextBoxFor(x=>x.Description)<br /> 

@Html.TextBoxFor(x=>x.Contents[0].Id)<br /> 
@Html.TextBoxFor(x=>x.Contents[0].Name)<br /> 
@Html.TextBoxFor(x=>x.Contents[0].ContentType)<br /> 
@Html.TextBoxFor(x=>x.Contents[1].Id)<br /> 
@Html.TextBoxFor(x=>x.Contents[1].Name)<br /> 
@Html.TextBoxFor(x=>x.Contents[1].ContentType)<br /> 
<input type="submit" value="Submit" id="submit"/> 
} 

現在你的提交按鈕將張貼到您查看的名字命名的方法和發送整個模型

+0

是的,感謝您的信息,但我想要做的是與標識一起提交和說明是內容的列表。數組是否可以用於此? – KevinIsNowOnline 2013-03-12 03:56:14

+0

是的,它會的。數組綁定是通過索引完成的。我會包括與例如 – 2013-03-12 04:08:20

+0

喜戴夫,我很高興地知道,它會工作。當我等待你的榜樣時,我會擺弄這一個。希望我們能夠關閉這個查詢並幫助其他有困難的人。 – KevinIsNowOnline 2013-03-12 07:48:29

0

代替通過遍歷手動構建JSON對象的,有在knockoutmvc形式的有趣的選擇

校驗(敲除與MVC集成)的例子 - http://knockoutmvc.com/BetterList

它發出了一個完整的JSON對象,而無需編寫任何額外的代碼。