繁体   English   中英

ASP.NET MVC5。 我不知道为什么我的表单返回空的viewmodel对象

[英]ASP.NET MVC5. I don't know why my form returns null viewmodel object

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

所以这是我的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);
    }

并查看:

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

尝试用for循环替换您的foreach循环:

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

还要注意,由于您仅显示Audio.Band.NameAudio.Title属性,并且Audio.Title没有相应的input字段,因此您永远不会在回发时检索它们的值。 您将仅检索选定的复选框值。 如果还想绑定这些值,则可以考虑将它们包括为隐藏字段:

@Html.HiddenFor(x => x[i].Audio.Band.Name)
@Html.HiddenFor(x => x[i].Audio.Title)

有关将模型绑定到列表的更多信息,建议您阅读following blog post ,该following blog post详细解释了应如何命名输入字段,以便ASP.NET MVC模型绑定器能够在回发时检索值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM