Как я передаю дату через URL, чтобы мое Действие читало в MVC?

Мне нравится Consolas также, но я также как Анонимный: http://www.ms-studio.com/FontSales/anonymous.html

10
задан Coppermill 7 December 2009 в 10:36
поделиться

4 ответа

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

&date=02/12/2009
change to
&date=20091202   (yyyymmdd)

Вы можете создать оболочку вокруг объекта DateTime, экземпляр которого был создан с использованием этого нового формата, или просто проанализировать его самостоятельно в контроллере.

public MyWrapperDate(int date)
{
    int year = date / 10000;
    int month = ((date - (10000 * year)) / 100);
    int day = (date - (10000 * year) - (100 * month));

    this.DateTimeObject = new DateTime(year, month, day);
}
4
ответ дан 3 December 2019 в 17:59
поделиться

You could URL encode it, but passing a DateTime around as a string is always a bit tricky because you may run into parsing errors if the request ever crosses culture boundaries.

A better option is to convert the DateTime to Ticks and pass that number around.

0
ответ дан 3 December 2019 в 17:59
поделиться

MVC использует текущий язык и региональные параметры при создании моделей URL и привязки. Это имеет смысл в некоторых сценариях (например, когда у вас есть текстовое поле, и пользователь вводит в него дату), но часто возникают проблемы. Если у вас разные культуры, тогда будет проще, если значения всегда будут в формате для инвариантной культуры.

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

0
ответ дан 3 December 2019 в 17:59
поделиться

Недостаток кофеина. Некоторые вещи не предназначены для понимания.

Очевидно, это ошибка первой версии .NET, которая не исправлена, потому что это может нарушить "устаревший" код.

Черт возьми, я только что нашел это:

Спасибо за ваши отзывы о .NET Framework! Мы согласны с тем, что это недосмотр и что тип свойства должен быть логическим. Однако довольно сложно (если не невозможно) внести это изменение в обратно совместимую версию (например, Orcas), потому что мы нарушим код любого клиента, полагаясь на сравнения строк. Так что, к сожалению, мы должны взвесить риск нарушения совместимости и преимущества чистоты API ... и когда дело доходит до наилучшей поддержки нашей клиентской базы, первое обычно выигрывает. Мы будем отслеживать это внутренне, чтобы улучшить ситуацию, и мы '

18
ответ дан 3 December 2019 в 17:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: