我正在尝试使用单轨网中的Checkboxlist来表示许多至许多桌子的关系。有一个特殊的表格,专业表,然后是一个特色桌,这是特殊和专业之间的许多映射表。

这是特殊模型类的摘录:

[HasAndBelongsToMany(typeof(SpecialTag),
        Table = "SpecialTagging", ColumnKey = "SpecialId", ColumnRef = "SpecialTagId")]
        public IList<SpecialTag> Tags { get; set; }

然后在我的添加/编辑特殊视图中:

$Form.LabelFor("special.Tags", "Tags")<br/>
    #set($items = $FormHelper.CreateCheckboxList("special.Tags", $specialTags))
        #foreach($specialTag in $items)
            $items.Item("$specialTag.Id") $Form.LabelFor("$specialTag.Id", $specialTag.Name) 
    #end

CheckboxList正确渲染器,但是如果我选择一些然后单击“保存”,则不会将Special/tag关联保存到SpecialTagging表中(传递给保存控制器操作的实体具有空标签列表。)我注意到的一件事是复选框上的名称和值属性很时髦:

<label for="special_Tags">Tags</label><br>
                    <input id="3" name="special.Tags[0]" value="UCampus.Core.Models.SpecialTag" type="checkbox"> <label for="3">Buy 1 Get 1 Free</label> 
            <input id="1" name="special.Tags[1]" value="UCampus.Core.Models.SpecialTag" type="checkbox"> <label for="1">Free</label> 
            <input id="2" name="special.Tags[2]" value="UCampus.Core.Models.SpecialTag" type="checkbox"> <label for="2">Half Price</label> 
            <input id="5" name="special.Tags[3]" value="UCampus.Core.Models.SpecialTag" type="checkbox"> <label for="5">Live Music</label> 
            <input id="4" name="special.Tags[4]" value="UCampus.Core.Models.SpecialTag" type="checkbox"> <label for="4">Outdoor Seating</label> 

有人有想法么?

谢谢!贾斯汀

有帮助吗?

解决方案

CheckboxList正确渲染

在我看来,您也可以渲染类似的东西

<input type="checkbox" name="special.Tags" value="1"/>
<input type="checkbox" name="special.Tags" value="2"/>

这使它变得更简单(没有输出名称的索引,它将通过控制器Action参数绑定将其正确解析为数组

另外,在您的示例中,所有复选框都具有相同的值 ucampus.core.models.specialtag 可能是不对的,您可能需要从标签中输出实际主键标识符(不确定,您是否可以在“表单处理动作”上显示您要绑定的类?)

其他提示

我能够通过指定ID和文本属性来使其正常工作...

 $Form.LabelFor("special.Tags", "Tags")<br/>
    #set($items = $FormHelper.CreateCheckboxList("special.Tags", $specialTags, "%{value='Id', text='Name'}"))
        #foreach($specialTag in $items)
            $items.Item("$specialTag.Id") $Form.LabelFor("$specialTag.Id", $specialTag.Name) 
    #end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top