在MVC中,我可以使用数据注释将默认文本替换为图像吗?

时间:2015-07-22 13:22:35

标签: asp.net-mvc asp.net-mvc-4 model-view-controller data-annotations

我想知道MVC内置了什么(我现在使用的是4),这样我就可以将显示从文本字段名称更改为图像。

来自模特:

 [Display(Name = "Red")]
        public virtual int? RedManaCost { get; set; }

从视图:

<div class="editor-label">
            @Html.LabelFor(model => model.Cards.RedManaCost)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.Cards.RedManaCost, new {style = "width:50px"})
            @Html.ValidationMessageFor(model => model.Cards.RedManaCost)
        </div>

这会在我的文本框中显示“红色”一词。我想要的是红色符号的图像。我知道我可以将其硬编码到我的观点中...我希望有一种更有效的方法。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以创建一个帮助程序,传递DiplayNameFor(“红色”,“蓝色”等),然后在帮助程序中执行Switch颜色而不是标记。在我的示例中,我使用的是彩色DIV而不是图片...但您可以使用图标将DIV更改为IMG

类似:

@helper CardColor(string myColor){
    switch(myColor.ToUpper()){
         case "RED":
               <div style="background-color: #FF0000; width: 20px; height:20px;"></div>
               break;
         case "BLUE":
               <div style="background-color: #0000FF; width: 20px; height:20px;"></div>
               break;
}

您可以这样使用它:

@CardColor(Html.DisplayNameFor(model => model.Cards.RedManaCost).ToHtmlString())

注意:我不确定MVC4中是否已存在DisplayNameFor但如果不存在......您可以创建扩展程序。