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

米蒂

我在这个问题上停留了一段时间。

我创建了一个简单的视图模型:

public class AddTranslationViewModel
{
    public List<ProjectTranslation> ProjectTranslations { get; set; }
    public AddTranslationViewModel()
    {
        ProjectTranslations = new List<ProjectTranslation>();
    }
}

ProjectTranslation类:

public class ProjectTranslation
{
    public int ProjectTranslationId { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public string Address { get; set; }

    public int LanguageId { get; set; }
    public Language Language { get; set; }

    public int ProjectId { get; set; }
    public Project Project { get; set; }

}

一个使用AddTranslationViewModel的简单视图

<table class="table">

    @foreach (var item in Model.ProjectTranslations)
    {
        @Html.HiddenFor(modelItem => item.ProjectTranslationId)
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Language.LanguageCode)
            </td>
            <td>
                @Html.EditorFor(modelItem => item.Title)
            </td>
        </tr>
    }

</table>
<input type="submit" value="Send" />

最后是我的POST方法:

    public ViewResult AddTranslation(AddTranslationViewModel projectTranslations)
    {
        if (ModelState.IsValid)
        {
           //...
        }
        return View(projectTranslations);
    }

这个想法非常基础,我想显示一个项目列表,在其中应该可以更改/编辑值。

但是,模型绑定不起作用,HTTPPost-Method AddTranslation中的projectsTranslations参数始终为空。

这是怎么了

马尔辛·扎布洛克(Marcin Zablocki)

绑定到对象列表需要使用名称包含索引的名称创建输入字段结构,即:

<input type="text" name="YourArrayOrList[0].SomeProperty" value="123" />
<input type="text" name="YourArrayOrList[0].SomeOtherProperty" value="321" />
<input type="text" name="YourArrayOrList[1].SomeProperty" value="123" />
<input type="text" name="YourArrayOrList[1].SomeOtherProperty" value="321" />

此外,您需要使用Razor的Html.BeginFrom方法将表单指向Controller中适当的操作方法(请参阅文档)。在这种情况下,它应如下所示:

@using(Html.BeginForm("AddTranslation","YourControllerName"))
{
    for (int i=0;i<Model.ProjectTranslations.Count; i++)
    {
        @Html.HiddenFor(model => model.ProjectTranslations[i].ProjectTranslationId)
        <tr>
            <td>
                @Html.DisplayFor(model => model.ProjectTranslations[i].Language.LanguageCode)
            </td>
            <td>
                @Html.EditorFor(model => model.ProjectTranslations[i].Title)
            </td>
        </tr>
    }
}

如果您的方法不是编辑方法,而是CREATE方法,则显然您的模型中的列表将包含0个元素。在这种情况下,请将for循环中的停止条件更改为所需的计数。

请记住,此主题之前已经讨论过很多次了:

模型中的ASP.NET MVC绑定数组

ASP.NET MVC-无法将数组绑定到视图模型

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

ASP.NET MVC 5模型绑定不起作用

来自分类Dev

asp.Net MVC视图模型在发布时为空

来自分类Dev

Asp.net- Mvc复杂模型绑定

来自分类Dev

空输入字符串的ASP.Net MVC模型绑定创建空模型对象

来自分类Dev

ASP.NET MVC绑定嵌套列表

来自分类Dev

asp.net mvc 5 DropDownListFor始终为空

来自分类Dev

asp.net mvc-5 HttpPostedFileBase 为空

来自分类Dev

ASP.NET MVC 5 ViewModel绑定

来自分类Dev

Asp.Net MVC 5模型状态

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

ASP.NET MVC绑定到视图模型

来自分类Dev

Json和ASP.NET MVC模型绑定

来自分类Dev

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

来自分类Dev

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

来自分类Dev

ASP.NET MVC Partiel视图模型绑定

来自分类Dev

JSON的ASP.NET MVC 4递归模型绑定

来自分类Dev

绑定[Serializable]类的ASP.Net MVC模型

来自分类Dev

ASP.NET MVC模型绑定派生类

来自分类Dev

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