c# - 绑定(bind)到列表 ASP.NET MVC 动态 jQuery 索引

标签 c# html asp.net asp.net-mvc razor

我有一组动态创建的列表元素。这些列表元素中的每一个都包含一个输入文本,我想将其值传递给 Controller ​​。

HTML

<ul id="list"></ul>
<button id="add">Add</button>

<script>
    var counter = 1;

    $('#add').click(function () {
        var text = '<input type="text" name="(what should I put here?)"></input>';
        var li = '<li>' + text + '</li>';

        $(li).appendTo('#list');
        counter++;
        return false;
    });
</script>

查看模型

public IEnumerable<string> list {get; set;}
...

如何将这些值隐式绑定(bind)到我的 ViewModel?我试图使用 counter 变量为每个创建的元素分配一个名称(如 list[counter]),但在 Controller 端 list 变量仍然是空的。

最佳答案

首先,我会根据您的未排序列表中的 li 数量来计算您的计数器:

$('#list > li').size()

然后为了让模型 Binder 开心,用列表预先修复你的属性:

'<input type="text" name="list[' + counter + ']"></input>'

完整的代码变成了:

$('#add').click(function () {
    var counter = $('#list > li').size();
    var text = '<input type="text" name="list[' + counter + ']"></input>';
    var li = '<li>' + text + '</li>';

    $(li).appendTo('#list');
    return false;
});

jsFiddle

请注意,您必须将 View 模型属性更改为 IListList 才能使索引也起作用:

public IList <string> list {get; set;}

关于c# - 绑定(bind)到列表 ASP.NET MVC 动态 jQuery 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32188108/

相关文章:

c# - 配置 Windows DNS 解析器缓存

c# - 生成的 SQL 查询中的奇怪条件

javascript - 数据表响应不适用于 ajax 调用

c# - 我在哪里可以找到同时遵守 OOP 原则和 SOLID 原则的代码示例?

asp.net - Linq to Sql-根据环境变量动态设置连接字符串

c# - 抽象类单例 C#

C# XML 解析 - 跳过某些 'items' 中的空标记

javascript - 使用 CSS 水平居中嵌入 HTML 中的 jQuery

javascript - 跨多个页面显示 HTML 元素

c# - 为什么我不能在封闭泛型的继承属性中使用 C# 语法,但 CLR 语法很好