使用来自viewmodel的LabelFor设置title属性

时间:2014-09-04 07:56:09

标签: c# asp.net-mvc razor asp.net-mvc-5

我在我的前端设置了一个设置,我在其中使用标签中的标题标签,以显示带文字的帮助图标。

我想在标签的标题标签中显示我的viewmodel中的值(例如<label title="TitleText">DisplayNameText</label>)。

我有以下剃刀:

@Html.LabelFor(m=>m.FinancingPayout, new { Class = "infoicon" })

这是我的viewmodel:

[DisplayName("- Udbetaling:")]
public string FinancingPayout { get; set; }

如何在viewmodel上添加属性,以便在标签的title标签中显示?

2 个答案:

答案 0 :(得分:2)

看看这个教程,它基本上是你想做的,只是设置一个工具提示而不是标题属性:

http://buildstarted.com/2010/09/14/creating-your-own-modelmetadataprovider-to-handle-custom-attributes/

正如我在前面的评论中所说,对于通用解决方案,您需要做一些工作,但幸运的是,您可以复制/粘贴教程中的大部分代码。

更新:如果Stephen Muecke说的是真的(并且我认为是),那么如果将接口IMetadataAware添加到自定义属性,则可以跳过自定义Metadataprovider。它会自动添加到AdditionalValues

答案 1 :(得分:1)

试试这个

@Html.LabelFor(m=>m.FinancingPayout, new { @class = "infoicon", title = "TitleText" })

编辑1

您需要创建一个方法(很可能是一个静态方法),比如这个

LocalizationLogic.cs

public static String GetLocalizedString(String keyName)
{
    // you can apply database or from xml file logic here to get the Translated string
    switch (keyName)
    {
      case "TitleText":
        return "Localized Title Text";
        break;
    }
    return String.Empty;
}

然后在您的视图中使用此方法

@Html.LabelFor(m=>m.FinancingPayout, new { @class = "infoicon",
    title = LocalizationLogic.GetLocalizedString("TitleText") })