从MVC中的视图发送动态字符串列表到控制器

本文关键字:字符串 动态 列表 控制器 MVC 视图 | 更新日期: 2023-09-27 17:51:11

我有一个这样的视图:

<div class="editor-label">
    @Html.LabelFor(model => model.Parts)
</div>
<div class="editor-field">
    <ul id="parts"></ul>
    <span id="parts-button" onclick="addPart()">+ Add part</span>
</div>

, JS像这样:

function addPart(name) {
    var input = $('<input>').attr("name", "Parts");
    if (name != null)
        input.val(name);
    $('<li>')
        .append(input)
        .append($('<div>')
            .html("X")
            .on("click", function () {
                var div = $(this)
                div.parent().slideUp(function () { $(this).remove(); });
            })
            .addClass("delete"))
        .appendTo($('#parts')).hide().slideDown();
}

和这样的模型:

public virtual IList<string> Parts { get; set; }

我的问题是;是否可以直接从视图中元素的动态数量填充模型字符串列表。或者我必须做以下操作:

public ActionResult Create(Model model, IList<string> Parts)
{
    model.Parts = Parts;

任何帮助或链接到相关信息是非常感谢。我一直在搜索,但是找不到这类问题的相关信息。

从MVC中的视图发送动态字符串列表到控制器

多亏了这个问题的答案:在视图中生成列表并将其传递给控制器,我发现如果您将输入的名称更改为包含和索引([I]),它将正确传递字符串。

解决方案:

在创建输入时,我将javascript更改为以下代码:

var input = $('<input>').attr("name", "Parts[" + index + "]");