c# - 在asp.net mvc4中动态添加DisplayName属性

标签 c# asp.net asp.net-mvc asp.net-mvc-4 razor

我有一个 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/

相关文章:

c# - 具有 CancellationTokenSource 的 channel 在处理后出现超时内存泄漏

c# - 计算mvc中子表中的记录数

c# - 如何删除所有表并重置 Azure SQL 数据库

asp.net - IIS7和ASP.NET如何限制用户请求

c# - 使用 MVC 5 EditorFor 从输入类型的数字中删除 slider /微调器

c# - 在 ASP.Net Core Web 应用程序中向 NavBar 添加下拉菜单( Bootstrap )

c# - 使用 Kestrel 时可配置端口号吗?

c# - Umbraco 新手,我应该从哪里开始?

javascript - Like 占位符文本在 Firefox 中无法完美运行

c# - 线程敏捷性是否出现在 ASP.Net MVC 中?