在頁面頂部,添加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