Creating custom Html Helper: MyHelperFor

前端 未结 4 1772
北海茫月
北海茫月 2020-12-14 04:40

I would like to create a helper that can be used like

@Html.MyHelperFor(m => m.Name)

this should return for example

4条回答
  •  春和景丽
    2020-12-14 05:21

    You can do something like (the following will take additional HTML attributes too).

    public static MvcHtmlString MyHelperFor(this HtmlHelper helper, Expression> expression, object htmlAttributes = null)
    {
        var data = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
        string propertyName = data.PropertyName;
        TagBuilder span = new TagBuilder("span");
        span.Attributes.Add("name", propertyName);
        span.Attributes.Add("data-something", "something");
    
        if (htmlAttributes != null)
        {
            var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
            span.MergeAttributes(attributes);
        }
    
        return new MvcHtmlString(span.ToString());
    }
    

提交回复
热议问题