相关疑难解决方法(0)

ASP.NET MVC中的模型绑定嵌套集合

我正在使用Steve Sanderson的BeginCollectionItem助手和ASP.NET MVC 2来模拟绑定项目的集合.

只要集合项的模型不包含其他集合,这样就可以了.

我有这样的模型:

-Product
--Variants
--- IncludedAttributes

每当我渲染和模型绑定Variants集合时,它都可以正常工作.但是使用IncludedAttributes集合,我无法使用BeginCollectionItem帮助器,因为id和names值将不会遵循为其父Variant生成的id和names值:

<div class="variant">
    <input type="hidden" value="bbd4fdd4-fa22-49f9-8a5e-3ff7e2942126" autocomplete="off" name="Variants.index">
    <input type="hidden" value="0" name="Variants[bbd4fdd4-fa22-49f9-8a5e-3ff7e2942126].SlotAmount" id="Variants_bbd4fdd4-fa22-49f9-8a5e-3ff7e2942126__SlotAmount">
    <table class="included-attributes">
        <input type="hidden" value="0" name="Variants.IncludedAttributes[c5989db5-b1e1-485b-b09d-a9e50dd1d2cb].Id" id="Variants_IncludedAttributes_c5989db5-b1e1-485b-b09d-a9e50dd1d2cb__Id" class="attribute-id">
        <tr>
            <td>
                <input type="hidden" value="0" name="Variants.IncludedAttributes[c5989db5-b1e1-485b-b09d-a9e50dd1d2cb].Id" id="Variants_IncludedAttributes_c5989db5-b1e1-485b-b09d-a9e50dd1d2cb__Id" class="attribute-id">
            </td>
        </tr>
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

如果你查看表格中第一个隐藏字段的名称,它就是Variants.IncludedAttributes - 它应该是Variants [bbd4fdd4-fa22-49f9-8a5e-3ff7e2942126] .IncludedAttributes [...] ...

这是因为当我第二次调用BeginCollectionItem时(在IncludedAttributes集合上),没有给出关于它的父Variant的项索引值的信息.

我渲染Variant的代码如下所示:

<div class="product-variant round-content-box grid_6" data-id="<%: Model.AttributeType.Id %>">
    <h2><%: Model.AttributeType.AttributeTypeName %></h2>
    <div class="box-content">
    <% using (Html.BeginCollectionItem("Variants")) { %>

        <div class="slot-amount">
            <label class="inline" for="slotAmountSelectList"><%: Text.amountOfThisVariant %>:</label>
            <select id="slotAmountSelectList"><option …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc

7
推荐指数
1
解决办法
7050
查看次数

标签 统计

asp.net-mvc ×1