none
Разный биндинг даты в Get и Post - это глюк или не глюк? RRS feed

  • Вопрос

  • В вебконфиге стоит:

    <globalization uiCulture="ru" culture="ru-RU" />

    в датапикере стоит:

    $.datepicker.setDefaults($.datepicker.regional["ru"]);

    При этом пост-запрос обрабатывается нормально, а в гет-запросе день и месяц местами перепутаны.

    Почему так?

    Фреймворк MVC 4

    18 марта 2013 г. 12:37

Ответы

Все ответы

  • Может у вас попросту скрипт установки параметра не отрабатывает. Обычный datepicker настройки сервера не читает.
    18 марта 2013 г. 18:05
    Модератор
  • дело не в скрипте, я через фидлер отследил как передаются параметры, в обоих случаях в одинаковом виде, но интерпретируются по-разному
    18 марта 2013 г. 18:09
  • Покажите этот кусок кода.
    18 марта 2013 г. 18:20
    Модератор
  • Так же попробуйте данное свойство, посмотрите поможет.
    18 марта 2013 г. 18:32
    Модератор
  • вот сюда залил

    https://github.com/ateregulov/TestDateBinding

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




    19 марта 2013 г. 8:01
  • К сожалению проект который выложили вы не компилируется, а разбираться, что к чему пока времени нет, не могли бы вы просто показать эти куски кода или сделать тоже самое на пустом проекте и выложить например в SkyDrive.
    20 марта 2013 г. 5:55
    Модератор
  • чтобы скомпилировалось, достаточно включить nuget-пакеты

    код тоже могу привести, вот контроллер:

     

    publicclassHomeController : Controller     {         publicActionResult Index(DateTime? date )         {             return View(date ?? DateTime.Parse("01/01/0001"));         }         [HttpPost]         publicActionResult Index(DateTime? date, int? id)         {             return View(date ?? DateTime.Parse("01/01/0001"));         }              }

    вот вьюха

    @model DateTime
     
      @using (Html.BeginForm())
      { 
        <input id="date" name="date" value="01.05.2013"/>
        <button type="submit" name="button" >Post-request</button>
      }
     
    @using (Html.BeginForm("Index","Home"FormMethod.Get))
      { 
        <input id="date" name="date" value="01.05.2013"/>
        <button type="submit" name="button" >Get-request</button>
      }
     
     
    <p>Sended value: Day @Model.Day, Month @Model.Month, Year @Model.Year
        </p>

        


    20 марта 2013 г. 6:37
  • Привет,

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

    MVC ModelBinder and Localization

    22 марта 2013 г. 7:51
    Модератор
  • спасибо, понятно, значит, это типо не баг, а фича...
    22 марта 2013 г. 8:56
  • Да, такой слегка странный фича) но на все есть свои причины, я думаю.

    22 марта 2013 г. 10:03
    Модератор
  • ну там в статье эти причины описаны - для сохранения перманентности ссылок
    22 марта 2013 г. 10:26
  • Вот и ответ, всё времени не было написать.
    23 марта 2013 г. 19:28
    Модератор
  • ну вот, взяли мой код и даже авторство не указали ((
    23 марта 2013 г. 19:33
  • Вот и спасибо за труд :). Ваш код это который в представлении (пара строк разметки), чтобы вам же понятнее было. С таким же успехом я мог его вообще не использовать а накидать пару линков и всё.
    23 марта 2013 г. 19:41
    Модератор
  • я еще и виноватым оказался, прелестно)) а то что я на него 15 минут потратил - это конечно же пустяки...
    23 марта 2013 г. 19:47
  • "а то что я на него 15 минут потратил - это конечно же пустяки..." - не мне же нужна была помощь. Вот и помогай людям после этого. Ваши претензии выглядят смешно и нелепо. Вы первый, кто обижается на подобные вещи. Переделал,

    <!DOCTYPE html>
    <html>
    <head>
      <title>Index</title>
    </head>
    <body>
      <div>
        @model DateTime
        <a href="/?date=3.04.2013">Отправить</a>
        <form action="/" method="post">
          <input id="date" name="date" value="23.03.2013" />
          <button type="submit" name="button">Отправить</button>
        </form>
        Полученное значение: @Model.ToString()
      </div>
    </body>
    </html>

    на это больше не будет претензий надеюсь.

    23 марта 2013 г. 20:56
    Модератор
  • я не просил переделывать между прочим... не понимаю ваших претензий... вот и верь после этого людям...
    23 марта 2013 г. 20:59