我有一个 asp.net mvc4 razor 表单,其中包含一系列复选框。 复选框是从动态生成的列表中填充的。该列表位于以下模型中:
public class UserViewModel
{
[Required]
[MaxLength(32)]
[DataType(DataType.Text)]
[DisplayName("ID")]
public string UserId { get; set; }
public List<SkillSetSelector> SkillSets { get; set; }
}
public class SkillSetSelector
{
public string Code { get; set; }
public string Description { get; set; }
public bool Selected { get; set; }
}
然后我将这样填充表单中的复选框:
@for (int i = 0; i < Model.SkillSets.Count;i++ )
{
<div>
<table class = "searchtable">
<tr>
<td>
@Html.CheckBoxFor(m => m.SkillSets[i]) @Model.SkillSets[i].Description</td>
</tr>
</table>
</div>
}
我的问题是我想动态分配每个复选框的 DisplayName 属性。 IE。我希望它与 Skillsets[i].Description 具有相同的值。目前,当模型发送回 Controller 时,无法知道每个复选框属于哪个项目,因为描述返回 null - 所选值是正确的,但除了字段的顺序之外,您什么也没有告诉您哪个项目项目是哪个。有什么办法可以做到这一点吗?复选框必须是动态的,因为它们所基于的数据是用户可定义的。 谢谢。
最佳答案
DisplayName 数据注释属性需要常量值。您无法动态设置它。
但是您可以引用资源文件中的值或为此创建您自己的自定义模型元数据提供程序
请查看本文中的 Custom Model MetaData Provider implementation
关于c# - 在asp.net mvc4中动态添加DisplayName属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22805860/