我正在为一个视图中的每个文本框中的一个项目工作,我已经完成了
<div class="field-box">
<label>Titlu</label>
<div class="col-md-7">
@Html.TextBoxFor(model => model.Name, new { @class = "form-control inline-input" })
</div>
@Html.ValidationMessageFor(model => model.Name)
</div>
我想写一个自定义帮助器,它会为我输出,但我不知道当我不在视图中时如何调用@ Html.TextBoxFor。
非常感谢任何帮助。 感谢
更新 我找到了这个Using HtmlHelper in a Controller,但看起来很糟糕,必须有一个更好的方法
答案 0 :(得分:6)
像这样:
public static class CustomHtmlHelper {
public static MvcHtmlString MyFieldBox<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, String title) {
StringBuilder sb = new StringBuilder();
sb.AppendLine("<div class=\"field-box\">");
sb.AppendLine("<div class=\"field-box">\");
sb.AppendLine("<label>{0}</label>", title);
sb.AppendLine("<div class=\"col-md-7\">");
sb.AppendLine( htmlHelper.TextBoxFor( expression, new { @class = "form-control inline-input" }) );
sb.AppendLine("</div>");
sb.AppendLine( htmlHelper.ValidationMessageFor( expression );
sb.AppendLine("</div>");
return new MvcHtmlString( sb.ToString() );
}
}
用法:
<%= Html.MyFieldBox( m => m.Name, "Name" ) %>
答案 1 :(得分:1)
如果仅在一个视图中使用它,则使用razor htmlhelper语法。
您可以像这样定义帮助器:
@helper MyTextBoxFor(System.Linq.Expressions.Expression<Func<ViewModelType, object>> expression )
{
<div class="field-box">
<label>Titlu</label>
<div class="col-md-7">
@Html.TextBoxFor(expression, new { @class = "form-control inline-input" })
</div>
@Html.ValidationMessageFor(expression)
</div>
}
然后像这样使用它:
@MyTextBoxFor(m => m.Name)
答案 2 :(得分:0)
http://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper%28v=vs.118%29.aspx
但是,如上所述,
HtmlHelper类旨在生成UI。它不应该用在控制器或模型中。
答案 3 :(得分:0)
如果适用于您,可以尝试使用编辑器模板