Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 通过post正确接收嵌套对象_Asp.net_Asp.net Mvc - Fatal编程技术网

Asp.net 通过post正确接收嵌套对象

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

我试图将一个复杂对象作为表单对象发送到mvc控制器。但是,我只收到一个带有默认值的
新的
对象

下面是对象(只是稍微修剪一下,以使示例更简单)

下面是我创建表单的方式:

@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; }
}