简体   繁体   English

使用 Html.BeginForm() ASP.NET MVC 将对象列表从控制器传递到视图时出错

[英]Error when passing list of objects from Controller to View using Html.BeginForm() ASP.NET MVC

I want to get multiple instances of my model objects sent to the controller as a list but for some reason, my code gives the error:System.ArgumentNullException: 'Value cannot be null.我想将模型对象的多个实例作为列表发送到控制器,但由于某种原因,我的代码给出了错误:System.ArgumentNullException:'Value cannot be null。

This is my View:这是我的观点:

 @model List<MVCModel.Models.Student> <b>Items</b> @ViewBag.Items <br /> <b>Value</b> @ViewBag.Value <br /> @using (Html.BeginForm("Form", "Home", FormMethod.Post)) { <table> <tbody id="GenaratorList"> <tr> @{ for (int c = 0; c < Model.Count(); c++) { <td>Enter Name: </td> <td>@Html.TextBoxFor(m => m[c].Name, new {id = "Name"})</td> <td>Enter Age: </td> <td>@Html.TextBoxFor(m => m[c].Age, new {id = "Age"})</td> <td><input type="button" value="Add" onclick="addGenarator()" /></td> } } </tr> <tbody> </table> <input type="submit" value="Submit Form"/> } <script> count = 0; function addGenarator() { var Name = $('#Name').val(); var Age = $('#Age').val(); var Student = "studentModels[" + count + "]"; $('#GenaratorList').append('<tr><td><input id="' + Student + '.Name" Name="' + Student + '.Name" type="text" class="form-control" readonly value="' + Name + '"></td><td><input id="' + Student + '.Age" Age="' + Student + '.Age" type="text" class="form-control" readonly value="' + Age + '"></td></tr>'); $('#Name,#Age').val(''); count++; } </script>

This is my Controller:这是我的控制器:

 [HttpPost] public ActionResult Form(List<Student> s) { ViewBag.Items = s.Count; ViewBad.Value = s[0].Age return View("Index"); }

This is my model:这是我的模型:

 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MVCModel.Models { public class Student { public string Name { get; set; } public int Age { get; set; } } }

    <script>
    count = 0;
    function addGenarator() {
        var Name = $('#Name').val();
        var Age = $('#Age').val();
        var Student = "s[" + count + "]";

        var html = `
        <tr>
            <td><input id="${Student}.Name" name="${Student}.Name" type="text" class="form-control" readonly value="${Name}" /></td>
            <td><input id="${Student}.Age" name="${Student}.Age" type="text" class="form-control" readonly value="${Age}" /></td>
        </tr>
    `;
        $('#GenaratorList').append(html);
        $('#Name,#Age').val('');
        count++;
    }
</script>

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

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