В верхней части страницы добавьте использование для System.Linq.Expressions, например.
@using System.Linq.Expressions
(или добавить это пространство имен в web.config).
Затем, чтобы создать помощник, это будет выглядеть примерно так:
@helper DisplayField(Expression<Func<MyModel, string>> field)
{
@Html.LabelFor(field)
@Html.DisplayFor(field)
}
Вы можете добавить дополнительную логику там, чтобы проверить наличие пустого значения и т.д. Вы можете быть лучше создание HtmlHelper, хотя, таким образом, вы могут использовать общие аргументы типа, а не «MyModel» и «string», как указано выше. Когда я последний раз пробовал, было невозможно добавить общие аргументы типа встроенному помощнику, например. следующее не возможно, если эта функция не была с тех пор добавил:
@helper DisplayField<TModel, TValue>(Expression<Func<TModel, TValue>> field)
{
@Html.LabelFor(field)
@Html.DisplayFor(field)
}
Таким образом, чтобы получить общий метод, вы бы использовать пользовательские HtmlHelper.Для этого:
Создайте файл, как следующее:
using System;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
namespace MvcApplication1.HtmlHelpers
{
public static class HtmlHelpers
{
public static MvcHtmlString DisplayFieldFor<TModel, TValue>(
this HtmlHelper<TModel> helper,
Expression<Func<TModel, TValue>> field)
{
var labelString = helper.LabelFor(field);
var displayString = helper.DisplayFor(field);
return MvcHtmlString.Create(
labelString.ToString() +
displayString.ToString());
}
}
}
В вашей странице, использование такой вещи будет:
@Html.DisplayFieldFor(m => m.Name)
@Html.DisplayFieldFor(m => m.PhoneNumber)
и т.д. Вам может потребоваться проверить ваши данные на своей странице или добавить пространство имен для HtmlHelper в web.config.
Почти то, что мне нужно, кроме того, что если это не строка, это не работает – Andrei