asp.net-mvc - 使用 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"))
用.WithSourceUrl(Url.Action("SourceUrl", "Grid", new {m => m.personId}))
我做了研究来创建这样的方法
public MvcHtmlString WithSourceUrlFor<TValue>(Expression<Func<T, TValue>> expression)
{
var MvcHtmlString = ExpressionHelper.GetExpressionText(expression);
return MvcHtmlString;
}
但我无法将 lamda 表达式转换为 MvcHtmlString 并且我被卡住了。
请帮我。
谢谢
解决方案
.WithSourceUrl
用于指定网格应该使用哪个 url 来重新加载内容。您不能在其中使用 person lambda,因为如果列表中有 100 万人,那么 url 会是什么。
我猜你想为每一行创建一个链接,这可以通过
Html.Grid(Model).Build(columns =>
{
columns
.Add(model => "<a href='" + Url.Action("Edit", new { model.Id }) + "'>Edit</a>")
.Encoded(false);
}
推荐阅读
- godot - Godot无法导出到android找不到密钥库,无法导出,如何解决?
- azure-storage - 知道如何使用 powershell/cli 或任何其他方式获取/查询其中创建了 Queue/table/file/blob 的存储帐户列表吗?
- amazon-elastic-beanstalk - Elastic Beanstalk .ebextentsion - 如何使其默认为 TLSv1.2
- python - Plotly:当x轴显示日期时如何注释最大值?
- javascript - 有没有办法用 Stripe Elements 实现流畅的排版?
- ruby-on-rails - Rails 嵌套循环依赖
- javascript - 对象内的动态键名
- python - 通过我的网络上的 RDjango REST API 集成 Apple 手表跟踪数据
- javascript - 使用数据库中的多个 API 结果填充表,为什么我的结果重复而不是正确附加?
- slam - 规划器 ORB 视觉 SLAM