我正在使用ASP.NET MVC创建LOB业务应用程序。在我的观点中,我发现这种模式重复了很多:
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
必须有可能编写一个帮助程序来将其减少到这样的程度:
@EditorForField(model => model.Name)
这将使视图更简单,并且可以更轻松地将表单布局更改为基于表格的布局(如果需要)
任何想法如何制作这样的辅助方法?
谢谢!
答案 0 :(得分:2)
我能够通过这段代码完成这项工作:
public static class HelperExtensions
{
public static MvcHtmlString EditorForField<TModel, TValue>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TValue>> expression)
{
const string template = @"<div class=""editor-label"">{0}</div><div class=""editor-field"">{1}{2}</div>";
string markup = string.Format(template,
html.LabelFor(expression),
html.EditorFor(expression),
html.ValidationMessageFor(expression));
return new MvcHtmlString(markup);
}
}
在您的视图中:
@Html.EditorForField(model => model.Name)