лямбда-выражение значение - PullRequest
0 голосов
/ 14 октября 2011

Я создал htmlhelper с такой подписью:

 public static MvcHtmlString PageLinks(this HtmlHelper html,
     PagingInfo pagingInfo,Func<int, string> pageUrl)

и я вижу, что это передается так:

@Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new {page = x}))

но я не знаю, что это значит?

x => Url.Action("List", new {page = x})

Пожалуйста, предложите значение этого лямбда-выражения

Ответы [ 2 ]

1 голос
/ 14 октября 2011
x => Url.Action("List", new {page = x})

Это (лямбда-функция) функция, которая имеет значение x (и мы знаем, что x должно быть целым числом, поскольку сигнатура Func<int, string>) возвращает URL (строку). (технически это лямбда-выражение, но в данном конкретном случае разница теряется)

Вы используете это так: string url = pageUrl(pageNumber);

Url.Action дает URL-адрес действия List, которое имеет единственный параметр (типа int и, вероятно, имя page), который будет заполнен значением x. Этот параметр, вероятно, будет страницей списка, которая должна быть возвращена.

@Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new {page = x}))

Это вернет HTML-строку со ссылкой на URL, который мы вычислили ранее. (вероятно, <a href='url'></a> или что-то подобное) ах ... это ваша функция: -)

(я думаю, что вы делаете что-то вроде этого: ASP.NET MVC Paging, сохранение текущих параметров запроса с классом PagingInfo, содержащим текущие и общие страницы, верно?)

1 голос
/ 14 октября 2011

Ну, это лямбда-выражение, которое принимает один параметр с именем x и неявно типизируется как int, и которое вызывает Url.Action с одним аргументом строки "List" другим аргументом анонимного типа который имеет единственное свойство page со значением параметра x.

Значение, возвращаемое из Url.Action, используется в качестве возвращаемого значения для лямбда-выражения.

Вот как само лямбда-выражение разбивается в терминах языковых конструкций. Если вы спрашиваете, что это означает с точки зрения поведения , это другой вопрос - вам нужно взглянуть на свой собственный метод PageLinks, а также документацию для Url.Action.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...