Asp.net 通过post正确接收嵌套对象
我试图将一个复杂对象作为表单对象发送到mvc控制器。但是,我只收到一个带有默认值的Asp.net 通过post正确接收嵌套对象,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我试图将一个复杂对象作为表单对象发送到mvc控制器。但是,我只收到一个带有默认值的新的对象 下面是对象(只是稍微修剪一下,以使示例更简单) 下面是我创建表单的方式: @using (Html.BeginForm("AddProjectResult", "Popups", FormMethod.Post, new { id = "addProjectForm"})) { @Html.EditorFor(model => model.ResultProject.Number, new
新的对象
下面是对象(只是稍微修剪一下,以使示例更简单)
下面是我创建表单的方式:
@using (Html.BeginForm("AddProjectResult", "Popups", FormMethod.Post, new { id = "addProjectForm"}))
{
@Html.EditorFor(model => model.ResultProject.Number, new { htmlAttributes = new { Id = "number", Class = "validate", Value = 0 } })
@Html.EditorFor(model => model.ResultProject.Name, new { htmlAttributes = new { Id = "name", Class = "validate" } })
}
现在我有一个按钮,它调用以下javascript:
var form = $("#addProjectForm");
var data = form.serialize();
var url = form.attr('action');
$.ajax({
type: "POST",
url: url,
data: data,
success: function(result) {
debugger;
}
});
以及控制器:
[HttpPost]
public ActionResult AddProjectResult(AddProjectPopupModel model)
{
return Json(new { Success = true });
}
我还尝试将控制器参数更改为:
public ActionResult AddProjectResult(long SelectedCountryId, Project ResultProject)
在这里,SelectedCountryId
得到了正确的填充,但项目没有
我想使用整个AddProjectPopupModel
作为参数,而不是它的特定值
但是我不知道该怎么做
调用的小提琴手输出:
控制器中的调试器值:
您的问题是在项目对象中使用的是文件
public class Project
{
public long Number;
public string Name;
}
它们应该是属性,以便可以导航到
public class Project
{
public long Number { get; set; }
public string Name { get; set; }
}
这应该行得通
我建议阅读更多信息这是一个onClick
事件吗?
public class Project
{
public long Number { get; set; }
public string Name { get; set; }
}