加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 当删除中间的一个项目时,如何绑定ASP.NET MVC中的对象列表

发布时间:2020-12-15 08:11:29 所属栏目:百科 来源:网络整理
导读:我在将模型绑定到MVC中的列表时遇到问题.我的页面具有动态添加和删除文本框的功能.我的页面 HTML将是 form id="prdt" div id="div_0" input type="text" name="products[0].Name" value="Coffee"/button id="0" onclick="return DeleteLocation(this.id)"Del
我在将模型绑定到MVC中的列表时遇到问题.我的页面具有动态添加和删除文本框的功能.我的页面 HTML将是
<form id="prdt">
    <div id="div_0"> <input type="text" name="products[0].Name" value="Coffee"/><button id="0" onclick="return DeleteLocation(this.id)">Delete</button></div>
    <div id="div_1"> <input type="text" name="products[1].Name" value="Tea" /><button id="1" onclick="return DeleteLocation(this.id)">Delete</button></div>
    <div id="div_2"> <input type="text" name="products[2].Name" value="Cola" /><button id="2" onclick="return DeleteLocation(this.id)">Delete</button></div>
    <div id="div_3"> <input type="text" name="products[3].Name" value="Pepsi" /><button id="3" onclick="return DeleteLocation(this.id)">Delete</button></div>
</form>

下面是删除文本框的代码

<script type="text/javascript">
    function DeleteLocation(id) {           
       $("#div_" + id).remove();
    }
</script>

但是当我删除“可乐”文本框并做一个ajax帖子时,我的列表中只有咖啡和茶(Controller Action Post).即列表中省略了最后一个

同样,当我删除“茶”文本框并做一个ajax帖子时,我只能获得咖啡.即列表中不包括其他三个值.

我认为列表与List索引绑定.是否有任何方法可以获取所有值,即使其中的任何项目被删除.

解决方法

可以通过添加名为products.Index的特殊字段来完成,其中包含下一个索引的值.您需要为每个新索引重复此操作:
<form id="prdt">
    <div id="div_0">
        <input type="hidden" name="products.Index" value="0" />
        <input type="text" name="products[0].Name" value="Coffee"/>
        <button id="0" onclick="return DeleteLocation(this.id)">Delete</button>
    </div>
    <div id="div_1"> 
        <input type="hidden" name="products.Index" value="1" />
        <input type="text" name="products[1].Name" value="Tea" />
        <button id="1" onclick="return DeleteLocation(this.id)">Delete</button>
    </div>
    <div id="div_2"> 
        <input type="hidden" name="products.Index" value="2" />
        <input type="text" name="products[2].Name" value="Cola" />
        <button id="2" onclick="return DeleteLocation(this.id)">Delete</button>
    </div>
    <div id="div_3"> 
        <input type="hidden" name="products.Index" value="3" />
        <input type="text" name="products[3].Name" value="Pepsi" />
        <button id="3" onclick="return DeleteLocation(this.id)">Delete</button>
    </div>
</form>

您可以在this article,“非顺序指数”部分找到更多信息

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读