Визуализация HTML-элемента управления при использовании с лямбда-выражением - PullRequest
0 голосов
/ 02 мая 2018

Я использую NonFactors Grid.Mvc (http://mvc -grid.azurewebsites.net / ) и обнаружил ограничение в этой сетке, если вы видите пример для http://mvc -grid .azurewebsites.net / Сетка / SourceUrl

Код в приведенном выше примере: (жирная строка содержит ограничение, которое не может передать лямбда-выражение):

@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;

    }

но мне не удалось преобразовать лямда-выражение в MvcHtmlString, и я застрял.

Пожалуйста, помогите мне.

Спасибо

1 Ответ

0 голосов
/ 24 октября 2018

.WithSourceUrl используется для указания того, какой URL должен использоваться сеткой для перезагрузки содержимого. Вы не можете использовать там лямбду для людей, потому что какой бы был URL, если бы в вашем списке был один миллион человек.

Я предполагаю, что вы хотите создать ссылку для каждой строки, чего можно достичь с помощью

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