ASP.NET MVC中的问题模型绑定嵌套列表

Trevorgk

我试图将视图绑定到包含列表中的列表的模型。当然,我更喜欢使用开箱即用的模型绑定。昨天花了一些时间,我发现了一个变通办法,它确实是一个hack,我想更正此问题。我的模型的基本结构如下:

public class MyMPIModel
{
    public List<ScoreInfo> ScoreInfo { get; set; }
}

public class ScoreInfo 
{
    public int ScorePrefId { get; set; }
    public List<Category> Categories { get; set; }
}

public class Category
{
    public int Id;
    public string Name;
    public bool Checked;
}

视图InterestCategories.cshtml包含以下形式:

@using (Html.BeginForm())
{
    for (var i = 0; i < Model.ScoreInfo.Count; i++)
    {
        @Html.EditorFor(x => x.ScoreInfo[i])
    }
}

编辑器模板ScoreInfo.cshtml:

@Html.HiddenFor(x => x.ScorePrefId)
<div class="preferences-block">
    @for (var i = 0; i < Model.Categories.Count; i++)
    {
        @Html.EditorFor(x => x.Categories[i])
    }
</div>

最后,编辑器模板Category.cshtml:

@Html.HiddenFor(x => x.Id)
@Html.HiddenFor(x => x.Name)
<label>
    @Html.CheckBoxFor(x => x.Checked, new { @class = "check"})
    <span>@Model.Name</span>
</label>

使用Firebug检查表单,我可以看到所有隐藏字段均已填充。同样,当我提交表单时,Fiddler会显示正确的数据。这是一个示例:

ScoreInfo[0].Categories[1].Id   2
ScoreInfo[0].Categories[1].Name Managing Money
ScoreInfo[0].Categories[1].Checked  false

但是,当我发布到控制器,设置断点并检查模型时,ScoreInfo对象的列表已被填充,但ScoreInfo对象内部的Category对象的列表则未被填充。

我的控制器中有以下POST操作:

[HttpPost]
public ActionResult InterestCategories(MyMPIModel model, FormCollection form)
{
    ...

    //  model would not bind forcing me to populate via form collection
    for (var i = 0; i < model.ScoreInfo.Count; i++)
    {
        ...
        for (var j = 0; j < scoreInfo.Categories.Count; j++)
        {
                var category = scoreInfo.Categories[j];

                var prefix = "ScoreInfo[" + i + "].Categories[" + j + "]";

                category.Name = form[prefix + ".Name"];

                var sId = form[prefix + ".Id"];
                if (sId != null) category.Id = Int32.Parse(sId);

                var sChecked = form[prefix + ".Checked"];
                if (sChecked != null) category.Checked = sChecked.Contains("true");
        }
    }
}
thepirat000

您必须在“类别”类中使用“属性”而不是“字段”:

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool Checked { get; set; }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET MVC中的问题模型绑定嵌套列表

来自分类Dev

ASP.NET MVC绑定嵌套列表

来自分类Dev

ASP.NET MVC 5模型绑定列表为空

来自分类Dev

ASP.NET Core 3 MVC:对象列表的模型绑定

来自分类Dev

ASP.NET MVC 5模型绑定列表为空

来自分类Dev

在asp.net mvc 4中回发时未绑定到模型的对象列表

来自分类Dev

在ASP.NET MVC中,模型绑定通用列表为null

来自分类Dev

基于ASP.NET MVC中的复选框选择填充模型的嵌套列表对象

来自分类Dev

什么是ASP.NET MVC中的模型绑定?

来自分类Dev

ASP.NET MVC:模型绑定中的类型转换

来自分类Dev

Asp.net- Mvc复杂模型绑定

来自分类Dev

在ASP.NET MVC中以编程方式验证模型列表

来自分类Dev

ASP.NET MVC 4 JSON绑定到视图模型-嵌套对象错误

来自分类Dev

c#ASP.net MVC中的DropDownlist和列表问题

来自分类Dev

c#ASP.net MVC中的DropDownlist和列表问题

来自分类Dev

具有Nullable DateTime属性的ASP.NET MVC4模型绑定问题

来自分类Dev

Asp.Net MVC模型绑定到属性类型System.Uri遇到Mono问题

来自分类Dev

ASP.Net MVC表单发布无法绑定模型列表属性

来自分类Dev

ASP.NET MVC:从中间删除输入后,使用模型绑定提交列表

来自分类Dev

ASP.NET MVC模型绑定不适用于项目列表

来自分类Dev

Asp.net MVC模型将不会绑定列表属性以进行查看

来自分类Dev

ASP.NET MVC 中的数据绑定

来自分类Dev

如何从ASP.NET MVC5中的JSON绑定模型中的属性

来自分类Dev

ASP.NET MVC绑定到视图模型

来自分类Dev

Json和ASP.NET MVC模型绑定

来自分类Dev

使用GET的ASP.Net MVC模型绑定复杂对象

来自分类Dev

ASP.NET MVC 5模型绑定编辑视图

来自分类Dev

$ http发布不与asp.net MVC模型绑定

来自分类Dev

ASP.NET MVC Partiel视图模型绑定

Related 相关文章

热门标签

归档