Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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
C# ASP.NETMVC5。我不知道';我不知道为什么我的表单返回null viewmodel对象_C#_Asp.net - Fatal编程技术网

C# ASP.NETMVC5。我不知道';我不知道为什么我的表单返回null viewmodel对象

C# ASP.NETMVC5。我不知道';我不知道为什么我的表单返回null viewmodel对象,c#,asp.net,C#,Asp.net,我需要选中所需的复选框,以确定是否需要将音频添加到播放列表中。我看到了所有音频和复选框列表的视图,但提交后,表单什么也不返回,我不知道为什么 下面是我的ViewModel代码: public class AddToPlaylist { public Audio Audio { get; set; } public bool IsSelected { get; set; } = false; } 控制器: public ActionResult Add() { var i

我需要选中所需的复选框,以确定是否需要将音频添加到播放列表中。我看到了所有音频和复选框列表的视图,但提交后,表单什么也不返回,我不知道为什么

下面是我的ViewModel代码:

public class AddToPlaylist
{
    public Audio Audio { get; set; }
    public bool IsSelected { get; set; } = false;
}
控制器:

public ActionResult Add()
{
    var item = new List<AddToPlaylist>();
    foreach (var a in db.Audios)
    {
        var cur = new AddToPlaylist();
        cur.Audio = a;
        item.Add(cur);
    }
        return View(item);
    }

    [HttpPost]
    public ActionResult Add(List<AddToPlaylist> playLists)
    {
        return View(playLists);
    }
public ActionResult Add()
{
var item=新列表();
foreach(以db.Audios为单位的a值)
{
var cur=new AddToPlaylist();
电流音频=a;
添加项目(当前);
}
返回视图(项目);
}
[HttpPost]
公共操作结果添加(列表播放列表)
{
返回视图(播放列表);
}
和视图:

@using AudioList.ViewModels

@model List<AddToPlaylist>

<h1>Adding audios...</h1>
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <table class="table table-striped">

    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Audio.Band.Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Audio.Title)
            </td>
            <td>
                @Html.CheckBoxFor(modelItem => item.IsSelected)
            </td>
        </tr>
    }

    </table>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </div>
@使用AudioList.ViewModels
@模型列表
正在添加音频。。。
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.Audio.Band.Name)
@DisplayFor(modeleItem=>item.Audio.Title)
@CheckBoxFor(modelItem=>item.IsSelected)
}

尝试将您的
foreach
循环替换为
for
循环:

@for (var i = 0; i < Model.Count; i++)
{
    <tr>
        <td>
            @Html.DisplayFor(x => x[i].Audio.Band.Name)
        </td>
        <td>
            @Html.DisplayFor(x => x[i].Audio.Title)
        </td>
        <td>
            @Html.CheckBoxFor(x => x[i].IsSelected)
        </td>
    </tr>
}

有关将模型绑定到列表的详细信息,我建议您阅读,其中详细说明了输入字段的命名方式,以便ASP.NET MVC模型绑定器能够在回发时检索值。

非常感谢。您救了我一天:)很高兴我能帮上忙。如果我的回答帮助您解决了问题,我们将为您提供帮助重新考虑你可能会把它标记为答案,点击它旁边的滴答声。
@Html.HiddenFor(x => x[i].Audio.Band.Name)
@Html.HiddenFor(x => x[i].Audio.Title)