2013-03-10 82 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对象,而无需编写任何额外的代码。