创建自定义的HTML帮助:MyHelperFor [英] Creating custom Html Helper: MyHelperFor

查看:114
本文介绍了创建自定义的HTML帮助:MyHelperFor的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个可以像

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

这应该返回例如:

<跨度名=姓名数据的东西=名称>< / SPAN>

如果是 @ Html.MyHelperFor(M = GT; m.MailID)
这将返回

if it is @Html.MyHelperFor(m => m.MailID) This should return

<跨度NAME =MailID数据的东西=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?

推荐答案

您可以执行类似(下面会采取额外的HTML属性太)。

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());
}

这篇关于创建自定义的HTML帮助:MyHelperFor的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆