Asp.net mvc 编辑器模板重复-applyBindings?

Asp.net mvc 编辑器模板重复-applyBindings?,asp.net-mvc,knockout.js,mvc-editor-templates,Asp.net Mvc,Knockout.js,Mvc Editor Templates,当我提交表单时,foreach:integers正在复制我的编辑器模板。有人知道为什么吗 e、 g.假设我提交5个整数,当我单击add按钮时,将添加5个编辑器模板,而不是1个 剃须刀: <div data-bind="foreach: integers"> @Html.EditorFor(model => model.Integers) </div> <input name="btn" type="button" data-bind="click: a

当我提交表单时,foreach:integers正在复制我的编辑器模板。有人知道为什么吗

e、 g.假设我提交5个整数,当我单击add按钮时,将添加5个编辑器模板,而不是1个

剃须刀:

<div data-bind="foreach: integers">
    @Html.EditorFor(model => model.Integers)
</div>
<input name="btn" type="button" data-bind="click: addInteger" value="+" />
<input name="btn" type="button" data-bind="click: removeInteger, enable: integers().length > 2" value="-" />
@model IntegerSorter.Models.IntegerViewModel
<div class="input-group">
@Html.TextBoxFor(
    m => m.IntegerValue,
    new { 
        @class = "text-box single-line text-input large-input",
        type = "number",
        data_bind = "value: name,
                uniqueName: true,
               valueUpdate: 'afterkeydown',
                      attr:
                          { 
                              id: 'Integers_' + $index() + '__IntegerValue',
                            name: 'Integers[' + $index() + '].IntegerValue'
                          }"
    }
)
@Html.ValidationMessageFor(model => model.IntegerValue)
</div>
        var viewModel = {
            integers: ko.observableArray([
                { name: ko.observable(), value: "0" }
            ]),
            addInteger: function () {
                this.integers.push({
                    name: ko.observable()
                });
            },
            removeInteger: function () {
                this.integers.pop({
                    name: ko.observable()
                });
            },
            save: function () {
                ko.utils.postJson($("form")[0], integers);
            }
        };
        ko.applyBindings(viewModel);
<div data-bind="foreach: integers">
<div class="input-group">
<input class="input-validation-error text-box single-line text-input large-input" data-bind="value: name, uniqueName: true, valueUpdate: 'afterkeydown', attr: { id: 'Integers_' + $index() + '__IntegerValue', name: 'Integers[' + $index() + '].IntegerValue' }" data-val="true" data-val-number="The field IntegerValue must be a number." data-val-regex="Enter an integer" data-val-regex-pattern="^-?\d+$" data-val-required="Enter an integer" id="Integers_0__IntegerValue" name="Integers[0].IntegerValue" type="number" value="">
<span class="field-validation-error" data-valmsg-for="Integers[0].IntegerValue" data-valmsg-replace="true">Enter an integer</span>
</div>

<div class="input-group">
<input class="input-validation-error text-box single-line text-input large-input" data-bind="value: name, uniqueName: true, valueUpdate: 'afterkeydown', attr: { id: 'Integers_' + $index() + '__IntegerValue', name: 'Integers[' + $index() + '].IntegerValue' }" data-val="true" data-val-number="The field IntegerValue must be a number." data-val-regex="Enter an integer" data-val-regex-pattern="^-?\d+$" data-val-required="Enter an integer" id="Integers_0__IntegerValue" name="Integers[0].IntegerValue" type="number" value="">
<span class="field-validation-error" data-valmsg-for="Integers[1].IntegerValue" data-valmsg-replace="true">Enter an integer</span>
</div>

<div class="input-group">
<input class="input-validation-error text-box single-line text-input large-input" data-bind="value: name, uniqueName: true, valueUpdate: 'afterkeydown', attr: { id: 'Integers_' + $index() + '__IntegerValue', name: 'Integers[' + $index() + '].IntegerValue' }" data-val="true" data-val-number="The field IntegerValue must be a number." data-val-regex="Enter an integer" data-val-regex-pattern="^-?\d+$" data-val-required="Enter an integer" id="Integers_0__IntegerValue" name="Integers[0].IntegerValue" type="number" value="">
<span class="field-validation-error" data-valmsg-for="Integers[2].IntegerValue" data-valmsg-replace="true">Enter an integer</span>
</div>

<div class="input-group">
<input class="input-validation-error text-box single-line text-input large-input" data-bind="value: name, uniqueName: true, valueUpdate: 'afterkeydown', attr: { id: 'Integers_' + $index() + '__IntegerValue', name: 'Integers[' + $index() + '].IntegerValue' }" data-val="true" data-val-number="The field IntegerValue must be a number." data-val-regex="Enter an integer" data-val-regex-pattern="^-?\d+$" data-val-required="Enter an integer" id="Integers_0__IntegerValue" name="Integers[0].IntegerValue" type="number" value="">
<span class="field-validation-error" data-valmsg-for="Integers[3].IntegerValue" data-valmsg-replace="true">Enter an integer</span>
</div>

<div class="input-group">
<input class="input-validation-error text-box single-line text-input large-input" data-bind="value: name, uniqueName: true, valueUpdate: 'afterkeydown', attr: { id: 'Integers_' + $index() + '__IntegerValue', name: 'Integers[' + $index() + '].IntegerValue' }" data-val="true" data-val-number="The field IntegerValue must be a number." data-val-regex="Enter an integer" data-val-regex-pattern="^-?\d+$" data-val-required="Enter an integer" id="Integers_0__IntegerValue" name="Integers[0].IntegerValue" type="number" value="">
<span class="field-validation-error" data-valmsg-for="Integers[4].IntegerValue" data-valmsg-replace="true">Enter an integer</span>
</div>
</div>
</div>
编辑:

HTML:

<div data-bind="foreach: integers">
    @Html.EditorFor(model => model.Integers)
</div>
<input name="btn" type="button" data-bind="click: addInteger" value="+" />
<input name="btn" type="button" data-bind="click: removeInteger, enable: integers().length > 2" value="-" />
@model IntegerSorter.Models.IntegerViewModel
<div class="input-group">
@Html.TextBoxFor(
    m => m.IntegerValue,
    new { 
        @class = "text-box single-line text-input large-input",
        type = "number",
        data_bind = "value: name,
                uniqueName: true,
               valueUpdate: 'afterkeydown',
                      attr:
                          { 
                              id: 'Integers_' + $index() + '__IntegerValue',
                            name: 'Integers[' + $index() + '].IntegerValue'
                          }"
    }
)
@Html.ValidationMessageFor(model => model.IntegerValue)
</div>
        var viewModel = {
            integers: ko.observableArray([
                { name: ko.observable(), value: "0" }
            ]),
            addInteger: function () {
                this.integers.push({
                    name: ko.observable()
                });
            },
            removeInteger: function () {
                this.integers.pop({
                    name: ko.observable()
                });
            },
            save: function () {
                ko.utils.postJson($("form")[0], integers);
            }
        };
        ko.applyBindings(viewModel);
<div data-bind="foreach: integers">
<div class="input-group">
<input class="input-validation-error text-box single-line text-input large-input" data-bind="value: name, uniqueName: true, valueUpdate: 'afterkeydown', attr: { id: 'Integers_' + $index() + '__IntegerValue', name: 'Integers[' + $index() + '].IntegerValue' }" data-val="true" data-val-number="The field IntegerValue must be a number." data-val-regex="Enter an integer" data-val-regex-pattern="^-?\d+$" data-val-required="Enter an integer" id="Integers_0__IntegerValue" name="Integers[0].IntegerValue" type="number" value="">
<span class="field-validation-error" data-valmsg-for="Integers[0].IntegerValue" data-valmsg-replace="true">Enter an integer</span>
</div>

<div class="input-group">
<input class="input-validation-error text-box single-line text-input large-input" data-bind="value: name, uniqueName: true, valueUpdate: 'afterkeydown', attr: { id: 'Integers_' + $index() + '__IntegerValue', name: 'Integers[' + $index() + '].IntegerValue' }" data-val="true" data-val-number="The field IntegerValue must be a number." data-val-regex="Enter an integer" data-val-regex-pattern="^-?\d+$" data-val-required="Enter an integer" id="Integers_0__IntegerValue" name="Integers[0].IntegerValue" type="number" value="">
<span class="field-validation-error" data-valmsg-for="Integers[1].IntegerValue" data-valmsg-replace="true">Enter an integer</span>
</div>

<div class="input-group">
<input class="input-validation-error text-box single-line text-input large-input" data-bind="value: name, uniqueName: true, valueUpdate: 'afterkeydown', attr: { id: 'Integers_' + $index() + '__IntegerValue', name: 'Integers[' + $index() + '].IntegerValue' }" data-val="true" data-val-number="The field IntegerValue must be a number." data-val-regex="Enter an integer" data-val-regex-pattern="^-?\d+$" data-val-required="Enter an integer" id="Integers_0__IntegerValue" name="Integers[0].IntegerValue" type="number" value="">
<span class="field-validation-error" data-valmsg-for="Integers[2].IntegerValue" data-valmsg-replace="true">Enter an integer</span>
</div>

<div class="input-group">
<input class="input-validation-error text-box single-line text-input large-input" data-bind="value: name, uniqueName: true, valueUpdate: 'afterkeydown', attr: { id: 'Integers_' + $index() + '__IntegerValue', name: 'Integers[' + $index() + '].IntegerValue' }" data-val="true" data-val-number="The field IntegerValue must be a number." data-val-regex="Enter an integer" data-val-regex-pattern="^-?\d+$" data-val-required="Enter an integer" id="Integers_0__IntegerValue" name="Integers[0].IntegerValue" type="number" value="">
<span class="field-validation-error" data-valmsg-for="Integers[3].IntegerValue" data-valmsg-replace="true">Enter an integer</span>
</div>

<div class="input-group">
<input class="input-validation-error text-box single-line text-input large-input" data-bind="value: name, uniqueName: true, valueUpdate: 'afterkeydown', attr: { id: 'Integers_' + $index() + '__IntegerValue', name: 'Integers[' + $index() + '].IntegerValue' }" data-val="true" data-val-number="The field IntegerValue must be a number." data-val-regex="Enter an integer" data-val-regex-pattern="^-?\d+$" data-val-required="Enter an integer" id="Integers_0__IntegerValue" name="Integers[0].IntegerValue" type="number" value="">
<span class="field-validation-error" data-valmsg-for="Integers[4].IntegerValue" data-valmsg-replace="true">Enter an integer</span>
</div>
</div>
</div>

输入一个整数
输入一个整数
输入一个整数
输入一个整数
输入一个整数

当html到达客户端时,当您有5个整数时,它是什么样子的?您希望它做什么?绑定将为observableArray中的每个项目创建元素,这不是您想要做的吗?问题中添加了HTML。ObservalArray中的每个元素都索引为[0],这可能表明问题所在。