ссылка на контейнер в DisplayTemplate - PullRequest
1 голос
/ 16 февраля 2012

У меня есть класс Viewmodel:

public class OrderLine {
    public string CurrencyCode { get; set; }
    public decimal PriceExVat { get; set; }
    public decimal PriceIncVat { get; set; }
}

Я определил пользовательский DisplayTemplate Currency.cshtml для форматирования валют.

@Html.DisplayFor(m => m.PriceExVat, "Currency")
@Html.DisplayFor(m => m.PriceIncVat, "Currency")

Currency.cshtml

@model decimal?
@Model.ToString() // here I need a reference to container to get the CurrencyCode

Я знаю, что могу использовать AdditionalViewData для передачи ссылки на объект контейнера в шаблон отображения:

@Html.DisplayFor(m => m.PriceIncVat, "Currency", new { conatiner = Model })

Мне просто интересно, доступна ли она уже внутри шаблона.Из ModelMetadata я могу получить только ContainerType.

Спасибо

1 Ответ

1 голос
/ 16 февраля 2012

Для этого ваш лучший вариант - создать пользовательский класс:

public class Currency {
    public decimal Amount { get; set; }
    public string CurrencyCode { get; set; }
}

Затем для OrderLine:

public class OrderLine {
    public Currency PriceExVat { get; set; }
    public Currency PriceIncVat { get; set; }
}

При вызове DisplayFor вы можете сбросить дополнительныйparam, так как будет использовать имя типа:

@Html.DisplayFor(m => m.PriceExVat

Затем в currency.cshtml в папке DisplayTemplates :

@model Currency
@(CurrencyCode): @Amount

Нечто подобное даст вам то, что вы хотите, я верю.

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