无法在视图中使用我的HtmlHelper

时间:2015-04-30 11:44:24

标签: c# asp.net-core asp.net-core-mvc

尝试在新的asp.net vNext项目中使用我的mvc5项目,我无法使用自动格式化文本框的HtmlHelper。

这是我的助手扩展类:

namespace MyNamespace.Helpers
{
    public static class YokoHelper
    {
        public static HtmlString YokoTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,
                                                                    Expression<Func<TModel, TProperty>> expression,
                                                                    string identifiant,
                                                                    string label)
    {
        string htmlString = string.Format("<span class=\"input\">" +
                                                "{0}" +
                                                "<label class=\"input-label label-yoko\" for=\"{1}\">" +
                                                    "<span class=\"label-content label-content-yoko\">{2}</span>" +
                                                "</label>" +
                                            "</span>",
                                            htmlHelper.TextBoxFor(expression, new { @class = "input-field input-yoko", @id = identifiant }),
                                            identifiant,
                                            label);

        return new HtmlString(htmlString);
    }
}

我在视图中包含了对命名空间的引用:

@using MyNamespace.Helpers

尝试使用这样的帮助:

@Html.YokoTextBoxFor(m => m.Email, "email", "Email")

知道我做错了什么?或者为什么它不能与vNext一起使用?

提前致谢

修改:

似乎第一个参数必须是IHtmlHelper而不是HtmlHelper(MVC 6 vs MVC 5)。

修改后的代码在我的回答中。

1 个答案:

答案 0 :(得分:4)

显然在MVC6中,第一个参数必须是IHtmlHelper而不是HtmlHelper

以下是修改后的代码:

    public static HtmlString YokoTextBoxFor<TModel, TProperty>(this IHtmlHelper<TModel> htmlHelper,
                                                                    Expression<Func<TModel, TProperty>> expression,
                                                                    string identifiant,
                                                                    string label)
    {
        string htmlString = string.Format("<span class=\"input\">" +
                                                "{0}" +
                                                "<label class=\"input-label label-yoko\" for=\"{1}\">" +
                                                    "<span class=\"label-content label-content-yoko\">{2}</span>" +
                                                "</label>" +
                                            "</span>",
                                            htmlHelper.TextBoxFor(expression, new { @class = "input-field input-yoko", @id = identifiant }),
                                            identifiant,
                                            label);

        return new HtmlString(htmlString);
    }