Можно ли генерировать вычисленные значения для свойств при использовании проверки аннотаций данных в ASP.NET MVC (3)? - PullRequest
2 голосов
/ 01 мая 2011

Как видно из заголовка, возможно ли создать вычисленные значения для свойств при использовании проверки аннотаций данных в ASP.NET MVC (3)?

Рассмотрим пример кредитной карты.Срок действия кредитной карты должен быть истек, обычно месяц и год.В пользовательском интерфейсе обычно лучше иметь поля select, чтобы пользователь мог выбирать их вместо полей text.Однако, с другой стороны, при отправке данных в платежный шлюз обычно используется одна строка в нескольких форматах: M/Y;MM/YY;MM/YYYY;и т.д.

Итак, я хочу создать окончательную строку после того, как я проверил две отдельные даты.

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

Ответы [ 2 ]

2 голосов
/ 01 мая 2011

Предполагая, что у вас есть свойства месяца и года:

[Range(1, 12)]
public int Month { get; set; }
[Range(2011, 2100)]
public int Year { get; set; }

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

public string ExpirationDate
{
    get 
    {
        return new DateTime(Year, Month, 1).ToString("MM/yyyy");
    }
}

Итак, когда ваше представлениеМодель успешно прошла проверку. Вы можете отправить свойство ExpirationDate на платежный шлюз:

[HttpPost]
public ActionResult Pay(PayViewModel model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }
    PaymentGateway.Pay(model.CCNumber, model.ExpirationDate);
    return RedirectToAction("Success");
}
1 голос
/ 01 мая 2011

Добавьте свойство, которое не отображается в графическом интерфейсе и объединяет ваши значения:

    class CreditCard
{
    public string ExpirationYear { get; set; }
    public string ExpirationMonth { get; set; }

    public string ExpirationDate
    {
        get
        {
            return string.Format("{0}/{1}", ExpirationMonth, ExpirationYear);
        }
    }
}

Или вы можете использовать метод, в котором вы предоставляете формат

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