尝试在新的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)。
修改后的代码在我的回答中。
答案 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);
}