Asp.net mvc 4 模仿MVC DisplayExtensions方法(与lambdas的有趣和混淆)

Asp.net mvc 4 模仿MVC DisplayExtensions方法(与lambdas的有趣和混淆),asp.net-mvc-4,generics,lambda,Asp.net Mvc 4,Generics,Lambda,我正试图在视图中可用的流畅界面中为MVC开发自己的可编辑数据网格。我的问题实际上是关于使用lambdas,而不是关于数据网格,但是上下文可能有助于理解我的问题。无论如何,我有一些代码如下所示: @model IEnumerable<AdamOneilSoftware.Models.Something> @{ var firstItem = Model.FirstOrDefault(); } @(Html.DataGrid(Model) .CssClass("data

我正试图在视图中可用的流畅界面中为MVC开发自己的可编辑数据网格。我的问题实际上是关于使用lambdas,而不是关于数据网格,但是上下文可能有助于理解我的问题。无论如何,我有一些代码如下所示:

@model IEnumerable<AdamOneilSoftware.Models.Something>

@{
    var firstItem = Model.FirstOrDefault();
}
@(Html.DataGrid(Model)
    .CssClass("data")
    .TextBox(model => firstItem.Text)
    .TextBox(model => firstItem.Position)
    .Render())

如何在调用中形成TModel参数?还是我完全走错了方向?我们的目标是像DisplayFor和EditorFor方法所做的那样——呈现一些HTML,并对目标属性的元数据(DataFormatString、Display label等)有所了解。

您需要将视图的
模型
实例作为参数传递

您可以在
Html.ViewData.Model

中找到这一点,谢谢您--理解如何应用您的建议需要一些额外的计算,但您的建议为我指明了正确的方向
public DataGridBuilder<TModel> TextBox<TValue>(Expression<Func<TModel, TValue>> expression)
{
    var del = expression.Compile();
    // invoke the delegate?
    var result = del.Invoke(); // but this expects a TModel argument
    return this;
}
var result = del.Invoke(TModel);