2011-06-23 6 views
4

Я создал расширение HtmlHelper, чтобы уменьшить количество повторяющихся разметки при создании формы:Использование Displayfor внутри шаблона отображения

public static MvcHtmlString RenderField<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression) 
{ 
    return htmlHelper.DisplayFor(expression, "formfield"); 
} 

Идея заключалась в том, что в моих взглядов, я могу просто написать @Html.RenderField(x=>x.MyFieldName) и он будет печатать ярлык и содержимое поля с соответствующими тегами div уже на месте.

Внутри папки displaytemplates я создал formfield.cshtml, содержащее следующее:

<div class="display-group"> 
<div class="display-label"> 
@Html.LabelFor(x => x) 
</div> 
<div class="display-field"> 
@Html.DisplayFor(x => x) 
</div> 
</div> 

К сожалению, это не кажется, что это возможно гнездо Displayfor внутри шаблона отображения (он ничего не делает) , Я не хочу просто использовать @Model, потому что тогда я не получу флажки для булевых значений, элементов управления календарем для дат и т. Д.

Есть ли хороший способ обойти это?

ответ

Смежные вопросы