【问题标题】:MVC "Editfor" Element for a "List<string>" with the option to add new elements带有添加新元素选项的“List<string>”的 MVC“Editorfor”元素
【发布时间】:2015-01-23 12:43:59
【问题描述】:

我需要显示一个“列表”属性以及向列表中添加新元素的选项。

基本上是这样

  • 值 1
  • 值 2
  • 按钮:添加新的

我为它创建了一个 editfor 模板,我在其中使用 foreach 循环显示所有值。但是,每个项目都是一个索引,所以当我用javascript添加一个新的输入字段时,索引是错误的。

任何建议如何实现这一点。

PS:添加新元素必须在客户端完成,因为它是一个简单的表单

【问题讨论】:

  • 你能显示你的循环代码吗?如果您使用的是foreach,这将不起作用。
  • 是的;我正在使用 for 循环。我知道 foreach 不起作用,因为它将您在 foreach 语句中定义的名称添加到表单中。但是我仍然需要一种添加索引的方法...
  • 渲染视图时,将 Count 保存到 JavaScript 变量中。你就会知道下一个可用的索引是什么。
  • 不是有一些标准的小部件可以为我做这件事吗?
  • 我不知道...

标签: asp.net-mvc asp.net-mvc-5 editorfor editorfortemplate


【解决方案1】:
    var abccounter = 1;

    $("#abcbutton").click(function () {

        $('#itemlist').append('<p><input class="text-box single-line" id="listofstringname_' + abccounter + '_" name="listofstringname[' + abccounter + ']" type="text" value=""></p>');

        abccounter++;
    });


<p>@Html.EditorFor(model => model.listofstringname)</p>

这就是我所做的,并且奏效了。我遇到的唯一问题(最终可能会解决)是我想用

包装每个元素

标签,但我不确定如何。这个 JS 只是添加了一个新的“文本框元素”,假设 1 作为开始,因为我的模型默认加载 1 个示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    相关资源
    最近更新 更多