C# 将对象的动态列表从视图发布到控制器

C# 将对象的动态列表从视图发布到控制器,c#,asp.net,asp.net-mvc,model-view-controller,razor,C#,Asp.net,Asp.net Mvc,Model View Controller,Razor,我正在写一个页面,允许用户在三天内输入测试坑的结果。 至少有两个试坑,最多有十个试坑 我最初在视图中放置了两个坑,并提供了添加和删除按钮,允许用户添加更多坑。 看起来是这样的: 我使用此javascript添加更多坑: var maxPits = 10; var minPits = 2; var wrapper = $(".pits"); var addButton = $(".addPit"); var delButton = $(".delPi

我正在写一个页面,允许用户在三天内输入测试坑的结果。 至少有两个试坑,最多有十个试坑

我最初在视图中放置了两个坑,并提供了添加和删除按钮,允许用户添加更多坑。 看起来是这样的: 我使用此javascript添加更多坑:

        var maxPits = 10;
    var minPits = 2;
    var wrapper = $(".pits");
    var addButton = $(".addPit");
    var delButton = $(".delPit");
    var x = 2;
    $(addButton).click(function (e) {
        e.preventDefault();
        if (x < maxPits) {
            x++;
            $(wrapper).append('<div class="row pit' + x + '"><div class="col-sm-1">Pit ' + x + '</div><div class="col-sm-3"><input type="number" placeholder="1.234" name="pit' + x + 'day1" id="pit' + x + 'day1"></div><div class="col-sm-3"><input type="number" placeholder="1.234" name="pit' + x + 'day2" id="pit' + x + 'day2"></div><div class="col-sm-3"><input type="number" placeholder="1.234" name="pit' + x + 'day3" id="pit' + x + 'day3"></div></div>');
            updatePitCount();
        } else {
            alert('too many pits!');
        }
    });

    $(delButton).click(function (e) {
        e.preventDefault();
        if (x > minPits) {
            var lastPit = '.pit' + x;
            $("div").remove(lastPit);
            x--;
            updatePitCount();
        } else {
            alert('must have a minimum of two!');
        }
    });
如何通过模型将视图中的动态数据导入控制器


任何帮助都将不胜感激。

Razor在将值表单视图传递给操作时使用了name属性的空间格式

例如:

如果你路过

public class ResultsModel
{
    public List<Pit> Pits { get; set; }
}
List<Pit>
那么一个

如果您使用razor生成项目列表,还有一件事是使用
for
循环,而不是
foreach

如果你路过

public class ResultsModel
{
    public List<Pit> Pits { get; set; }
}
List<Pit>
列表

进入视图并接收相同的数据,则您的名称属性格式必须类似于
[0]。第1天

您必须通过表单标记将数据发布到操作

<form method="post" action="/Pit/Create">
   <div class="row">
    <div class="col-sm-1">
        Pit 1
    </div>
    <div class="col-sm-3">
        <input type="number" placeholder="1.234" name="[0].Day1" />
    </div>
    <div class="col-sm-3">
        <input type="number" placeholder="1.234" name="[0].Day2" />
    </div>
    <div class="col-sm-3">
        <input type="number" placeholder="1.234" name="[0].Day3" />
    </div>
</div>
<div class="row">
    <div class="col-sm-1">
        Pit 2
    </div>
    <div class="col-sm-3">
        <input type="number" placeholder="1.234" name="[1].Day1">
    </div>
    <div class="col-sm-3">
        <input type="number" placeholder="1.234" name="[1].Day2">
    </div>
    <div class="col-sm-3">
        <input type="number" placeholder="1.234" name="[1].Day3">
    </div>
</div>
</form>

坑1
坑2

你好,谢谢你。我按照您的建议更改了代码,因此我的控制器代码变成:
for(int I=0;I
我还按照您的建议更改了html,所有值现在都传递给controller.Hi。这是一个局部视图,表单是在主视图页面中指定的HI.ok。您不需要表单标记。您只需要在控制器中更正绑定的命名。
List<Pit>
<form method="post" action="/Pit/Create">
   <div class="row">
    <div class="col-sm-1">
        Pit 1
    </div>
    <div class="col-sm-3">
        <input type="number" placeholder="1.234" name="[0].Day1" />
    </div>
    <div class="col-sm-3">
        <input type="number" placeholder="1.234" name="[0].Day2" />
    </div>
    <div class="col-sm-3">
        <input type="number" placeholder="1.234" name="[0].Day3" />
    </div>
</div>
<div class="row">
    <div class="col-sm-1">
        Pit 2
    </div>
    <div class="col-sm-3">
        <input type="number" placeholder="1.234" name="[1].Day1">
    </div>
    <div class="col-sm-3">
        <input type="number" placeholder="1.234" name="[1].Day2">
    </div>
    <div class="col-sm-3">
        <input type="number" placeholder="1.234" name="[1].Day3">
    </div>
</div>
</form>