我被困了!!!
请帮助我。
我在mvc 2.0项目中有以下视图模型属性...
public IDictionary<int, IList<int>> SelectedErrorsErrorType { get; set; }
基本上我在一个或多个标签下有一组复选框。这些选项卡类似于英语,德语,法语等。我想使用tabId作为字典键,并选择复选框ID作为字典值(整数列表)。我似乎无法以这种方式绑定我的模型。我之前在stackoverflow上发现要映射到Dictionary Key,我们需要一个隐藏的字段,例如
<input type="hidden" name="<%: String.Format("SelectedErrorsErrorType[{0}].Key", index) %>"value="<%: item.LanguageId %>" />
那很好!但是如何将Value字段映射到我的Key。
任何帮助都将受到高度赞赏。
感谢。
答案 0 :(得分:1)
这很容易......不知道为什么我一开始就想不出来。
这是我的工作方式......
<input type="hidden" name="<%: String.Format("SelectedErrorsErrorType[{0}].Key", index) %>"
value="<%: item.LanguageId %>" />
<%: Html.CheckBox(String.Format("SelectedErrorsErrorType[{0}].Value[{1}]", index, counter), false, new { @value = errorType.ErrorTypeId })%>
答案 1 :(得分:0)
这里似乎是解决方案:ASP.NET MVC - Model binding a set of dynamically generated checkboxes - how to
但你也可以使用
public class ErrorType
{
public int Key { get; set; }
public int Value { get; set; }
}
public class ViewModel
{
public IList<ErrorType> PostedValues { get; set; }
public IDictionary<int, IList<int>> SelectedErrorsErrorType
{
get { return PostedValues.GroupBy(x => x.Key).ToDictionary(x => x.Key, x => x.Select(y => y.Value).ToList());
set { /* backward if you need it */ }
}
}
并绑定到PostedValues。