Вы можете написать строго типизированный помощник с λ-выражением:
public static class StatusExtensions
{
public static IHtmlString StatusBox<TModel, TProperty>(
this HtmlHelper<TModel> helper,
Expression<Func<TModel, TProperty>> ex
)
{
return new HtmlString(
"Some things here ... " +
helper.HiddenFor(ex));
}
}
и затем:
@Html.StatusBox(model => model.RowInfo.Created)
ОБНОВЛЕНИЕ:
По запросуВ разделе комментариев приведена пересмотренная версия помощника:
public static class StatusExtensions
{
public static IHtmlString StatusBox<TModel>(
this HtmlHelper<TModel> helper,
Expression<Func<TModel, RowInfo>> ex
)
{
var createdEx =
Expression.Lambda<Func<TModel, DateTime>>(
Expression.Property(ex.Body, "Created"),
ex.Parameters
);
var modifiedEx =
Expression.Lambda<Func<TModel, DateTime>>(
Expression.Property(ex.Body, "Modified"),
ex.Parameters
);
return new HtmlString(
"Some things here ..." +
helper.HiddenFor(createdEx) +
helper.HiddenFor(modifiedEx)
);
}
}
, а затем:
@Html.StatusBox(model => model.RowInfo)
Нет необходимости говорить, что для создания небольших фрагментов HTML должны использоваться пользовательские помощники HTML.Сложность может быстро возрасти, и в этом случае я бы рекомендовал использовать шаблон редактора для типа RowInfo
.