我想将全球化的帮助文本公开到MVC视图。

目前的代码如下:

自定义属性类

 class HelpTextAttribute : Attribute
 {
     public string Text { get; set; }
 }


查看模型属性和自定义注释

[HelpText(Text = "This is the help text for member number")]
public string MemberNo { get; set; }


(文字字符串必须来自资源类)

问题是我如何编写可以执行以下操作的HTML扩展程序

@Html.HelpTextFor(m => m.MemberNo)

最佳答案

您需要使用以下内容扩展HtmlHelper类:

public static MvcHtmlString HelpTextFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expr)
{
    var memberExpr = expr.Body as MemberExpression;

    if (memberExpr != null)
    {
        var helpAttr = memberExpr.Member.GetCustomAttributes(false).OfType<HelpTextAttribute>().SingleOrDefault();

        if (helpAttr != null)
            return new MvcHtmlString(@"<span class=""help"">" + helpAttr.Text + "</span>");
    }

    return MvcHtmlString.Empty;
}


然后根据要求使用它:

@Html.HelpTextFor(m => m.MemberNo)


另外,请确保使用HelpTextAttribute修饰符标记public

关于c# - 自定义数据注释和MVC帮助器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30916716/

10-13 08:09
查看更多