Creating custom Html Helper: MyHelperFor
asp.net-mvc, asp.net-mvc-4, c#, razor
Solution
You can do something like (the following will take additional HTML attributes too).
public static MvcHtmlString MyHelperFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> 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());
}
Problem
I would like to create a helper that can be used like ``` @Html.MyHelperFor(m => m.Name) ``` this should return for example `<span name="Name" data-something="Name"></span>` if it is `@Html.MyHelperFor(m => m.MailID)` This should return `<span name="MailID" data-something="MailID"></span>` I should be able to access the Property name in the helper method to make this type of helper ,I think. How can I do this?