在与 lambda 表达式一起使用时呈现 html 控件



我正在使用NonFactors Grid.Mvc (http://mvc-grid.azurewebsites.net/(,如果您在 http://mvc-grid.azurewebsites.net/Grid/SourceUrl 上看到一个示例,我发现此网格存在限制

上面示例中的代码是(粗体行包含无法传递 lambda 表达式的限制(:

@model IEnumerable<Person>
@(Html
.Grid(Model)
.Build(columns =>
{
columns.Add(model => model.Name).Titled("Name");
columns.Add(model => model.Surname).Titled("Surname");
columns.Add(model => model.MaritalStatus).Titled("Marital status");
columns.Add(model => model.Age).Titled("Age");
columns.Add(model => model.Birthday).Titled("Birth date").Formatted("{0:d}");
columns.Add(model => model.IsWorking).Titled("Employed");
})

.WithSourceUrl(Url.Action("SourceUrl", "Grid"))
.Empty("No data found")
.Pageable(pager =>
{
pager.PagesToDisplay = 3;
pager.RowsPerPage = 2;
})
.Filterable()
.Sortable()
)

我想用.WithSourceUrl(Url.Action("SourceUrl", "Grid", new {m => m.personId}))替换.WithSourceUrl(Url.Action("SourceUrl", "Grid"))

我做了研究来创造这样的方法

public MvcHtmlString WithSourceUrlFor<TValue>(Expression<Func<T, TValue>> expression)
{
var MvcHtmlString = ExpressionHelper.GetExpressionText(expression);
return MvcHtmlString;
}

但我无法将lamda表达式转换为MvcHtmlString,我被卡住了。

请帮助我。

谢谢

.WithSourceUrl用于指定网格应使用哪个 URL 来重新加载内容。 你不能在那里使用personlambda,因为如果你的列表中有一百万人,网址会是什么。

我猜你想为每一行创建一个链接,这可以通过

Html.Grid(Model).Build(columns =>
{
columns
.Add(model => "<a href='" + Url.Action("Edit", new { model.Id }) + "'>Edit</a>")
.Encoded(false);
}

最新更新