gpt4 book ai didi

c# - 通过 Ajax 将复杂对象发布到 MVC

转载 作者:行者123 更新时间:2023-11-29 15:43:35 25 4
gpt4 key购买 nike

我研究 MVC 已经有一段时间了,我对创建一个迷你应用程序很感兴趣,它可以将所有 cd 内容记录在一张 CD 下。我现在的主要障碍是如何将内容列表与其他属性值一起传递给 Cd.class?

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 和 Description 值已经由 ajax 的 Serialize 函数传递 - 只有 Contents 属性是我难以理解的那个

更新

我通过创建一个将序列化数据发送到 Controller 的 ajax 片段解决了我的查询:

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

具有以下形式的数据对象:

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

现在 Controller 正在接收完整的 Cd 实体值集及其内容。希望这对将来的人有用。

最佳答案

实现你想要的最好方法是删除 JQuery 并用 Ajax.BeginForm 替换你的 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"/>
}

现在您的提交按钮将发布到以您的 View 命名的方法并发送整个模型

关于c# - 通过 Ajax 将复杂对象发布到 MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15323973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com