Как обработать лямбда-оператор для получения значений данных - PullRequest
0 голосов
/ 15 июля 2011

Некоторый фон:

Вот моя модель для пользователя членства (посторонние вещи удалены):

public class Address {
    public String Address1 { get; set; }
    public String Address2 { get; set; }
    public String City     { get; set; }
    public String State    { get; set; }
    public String Zip      { get; set; }
}

public class MembershipUser {
    public String LoginId { get; set; }
    public String Password { get; set; }

    [Display(Name = "Mailing Address")]
    public Address MailingAddress { get; set; }

    [Display(Name = "Physical Address")]
    public Address PhysicalAddress { get; set; }

    ...
}

Html вспомогательный метод, который я написал для выходных адресов:

@Html.Address (Model => Model.MailingAddress, Model => Model.MailingAddress.Address1, Model => Model.MailingAddress.Address2, Model => Model.MailingAddress.City, Model => Model.MailingAddress.State , Model => Model.MailingAddress.Zip)

@Html.Address (Model => Model.PhysicalAddress, Model => Model.PhysicalAddress.Address1, Model => Model.PhysicalAddress.Address2, Model => Model.PhysicalAddress.City, Model => Model.PhysicalAddress.State , Model => Model.PhysicalAddress.Zip)

Конечно, должен быть способ назвать это так:

@Html.Address (Model => Model.MailingAddress)

@Html.Address (Model => Model.PhysicalAddress)

Я должен признаться, что у меня не было этого момента "а-ха-ха" с лямбда-выражениями. Я не могу обернуться вокруг них. Я искал в Интернете, но я не уверен, что я ищу. Любые советы, указатели, номенклатура, примеры будут с благодарностью.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 15 июля 2011

В этом случае вам лучше определить редактор или шаблон отображения , а не расширение Html-помощника, где:

@Html.EditorFor(model => model)

Помните, что для простоты (пока игнорируем Expression)бит модели => модели и, в частности, =>, является просто сокращением для анонимного делегата, который позволяет вашей реализации EditorFor осуществлять обратный вызов и получать объект модели (в вашем случае адрес), с которым вы хотите работать.

Выражение становится немного сложнее, но опять же в простейшем смысле дает вам возможность упаковать делегат и передать его как «данные».

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