Asp.net mvc 在将模型数据从视图传递到控制器时只获取空值

Asp.net mvc 在将模型数据从视图传递到控制器时只获取空值,asp.net-mvc,Asp.net Mvc,我刚刚用MVC.NET framework创建了一个组合模型,并将其从视图传递到控制器,只得到空值: 型号: namespace MyApp.Models { public class ModelX { public String attributeX { set; get; } } } namespace MyApp.Models { public class ModelY { public String attribu

我刚刚用MVC.NET framework创建了一个组合模型,并将其从视图传递到控制器,只得到空值:

型号:

namespace MyApp.Models
{
    public class ModelX
    {
        public String attributeX { set; get; }
    }
}

namespace MyApp.Models
{
    public class ModelY
    {
        public String attributeY { set; get; }
    }
}

namespace MyApp.Models
{
    public class MyComposedModel
    {
        public ModelX SubModel1 { set; get; }
        public ModelY SubModel2 { set; get; }
    }
}
CreateView:

@model Repo.Models.MyComposedModel

@{
    ViewBag.Title = "Create";
}

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.SubModel1.attributeX, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.SubModel1.attributeX, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.SubModel1.attributeX, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.SubModel2.attributeY, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.SubModel2.attributeY, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.SubModel2.attributeY, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}
请你帮我找出我的错误所在。对不起,我是新手。我希望我没有以完全错误的方式做这件事。最好的问候和感谢提前

试试这个

namespace MyApp.Models
{
    public class MyComposedModel
    {
        public MyComposedModel()
        {
            SubModel1 = new ModelX();
            SubModel2 = new ModelY();
        }

        public ModelX SubModel1 { set; get; }
        public ModelY SubModel2 { set; get; }
    }
}

如果是MVC,则无法自动初始化这些子模型。

您显示的代码工作正常。不要接受与您的问题无关的答案!谢谢但这并不能完全帮助我。在我得到控制器类的“modX.attributeX=MCM.SubModel1.attributeX;”行中的错误之前。现在我在“db.SaveChanges();”行中得到了DbUpdateException,这仍然是因为数据库列定义中不允许使用我的attributeX的null值。知道吗?你的“MCM.SubModel1.attributeX”现在有值了吗?没有:(能否附上“HttpContext.Request.Form”所包含内容的屏幕截图?对不起,在哪里可以找到HttpContext.Request.Form?
namespace MyApp.Models
{
    public class MyComposedModel
    {
        public MyComposedModel()
        {
            SubModel1 = new ModelX();
            SubModel2 = new ModelY();
        }

        public ModelX SubModel1 { set; get; }
        public ModelY SubModel2 { set; get; }
    }
}