powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Различный формат DateTime при вызове методов контроллера
7 сообщений из 7, страница 1 из 1
Различный формат DateTime при вызове методов контроллера
    #39538035
Crazy_Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрейшего времени суток.
По работе достался проект на ASP. Набрел на следующую проблему.
Если вызывать метод контроллера через скрипты
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    <script>
        $(function () {

                $("#ResreshDate").click(function () {
                    var dateFrom = $("#DateFrom").val();
                    var dateTo = $("#DateTo").val();
                    window.location.replace('@Url.Action("ProductionsPlan")' + "?dateFrom=" + dateFrom + "&dateTo=" + dateTo);
                });
        });
    </script>


то в контроллер передается дата в формате dd.MM.yyyy, причем с инвариантной культурой.
Если делать так
Код: javascript
1.
@Url.Action("PrintChartShipping", "DiagramReports", new {startdate = ViewBag.StartDate, enddate = ViewBag.EndDate})


то дата передается в формате MM.dd.yyyy, и все с той же инвариантной культурой
в system.web
Код: xml
1.
    <globalization enableClientBasedCulture="true" culture="ru-RU" uiCulture="ru"/>


в _Layout.cshtml - <html lang="ru">
как еще правильно жестко задать культуру?
...
Рейтинг: 0 / 0
Различный формат DateTime при вызове методов контроллера
    #39538143
Stanislav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как дата попала в ViewBag.StartDate ?
...
Рейтинг: 0 / 0
Различный формат DateTime при вызове методов контроллера
    #39538235
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crazy_Wolf,

$("#DateFrom").val()
это просто строка

убедитесь что в экшене контроллера она правильная, а дальше просто работайте с datatime

если нужно работать с датой как со стокой, то лучше использовать формат UTC
...
Рейтинг: 0 / 0
Различный формат DateTime при вызове методов контроллера
    #39538409
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где вызов методов контроллера?
...
Рейтинг: 0 / 0
Различный формат DateTime при вызове методов контроллера
    #39538460
Crazy_Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StanislavА как дата попала в ViewBag.StartDate ?

дата попадает в случае с ViewBag'ом так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[HttpGet]
        public ActionResult SodaShipping(DateTime? startdate, DateTime? enddate)
        {
            if (!startdate.HasValue)
                startdate = DateTime.Now.Date.AddDays(-1 * (DateTime.Now.Date.Day - 1)).Date;
            if (!enddate.HasValue)
                enddate = DateTime.Now.Date;
            ViewBag.StartDate = startdate.Value;
            ViewBag.EndDate = enddate.Value;
            return View();
        }



плюс еще есть такой биндер
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class ModelBinder
    {
        public class DateTimeBinder : IModelBinder
        {
            public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
            {
                var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
                bindingContext.ModelState.SetModelValue(bindingContext.ModelName, value);
                if (value != null && !string.IsNullOrEmpty(value.AttemptedValue))
                {
                    DateTime date;
                    if (DateTime.TryParse(value.AttemptedValue, out date) )
                    {
                        return date;
                    }
                    else
                    {
                        return null;
                    }
                }
                return null;
            }
        }



собственно я и заметил косяки с датой при отладке приходящего value
...
Рейтинг: 0 / 0
Различный формат DateTime при вызове методов контроллера
    #39541150
Stanislav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crazy_WolfStanislavА как дата попала в ViewBag.StartDate ?

дата попадает в случае с ViewBag'ом так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[HttpGet]
        public ActionResult SodaShipping(DateTime? startdate, DateTime? enddate)
        {
            if (!startdate.HasValue)
                startdate = DateTime.Now.Date.AddDays(-1 * (DateTime.Now.Date.Day - 1)).Date;
            if (!enddate.HasValue)
                enddate = DateTime.Now.Date;
            ViewBag.StartDate = startdate.Value;
            ViewBag.EndDate = enddate.Value;
            return View();
        }



плюс еще есть такой биндер
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class ModelBinder
    {
        public class DateTimeBinder : IModelBinder
        {
            public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
            {
                var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
                bindingContext.ModelState.SetModelValue(bindingContext.ModelName, value);
                if (value != null && !string.IsNullOrEmpty(value.AttemptedValue))
                {
                    DateTime date;
                    if (DateTime.TryParse(value.AttemptedValue, out date) )
                    {
                        return date;
                    }
                    else
                    {
                        return null;
                    }
                }
                return null;
            }
        }



собственно я и заметил косяки с датой при отладке приходящего value

1. Можно сделать так в SodaShipping -
Код: c#
1.
ViewBag.StartDate = startdate.ToString("dd.MM.yyyy"); 

и enddate соответственно

2. Или так
Код: c#
1.
@Url.Action("PrintChartShipping", "DiagramReports", new {startdate = ViewBag.StartDate.ToString("dd.MM.yyyy"), enddate = ViewBag.EndDate.ToString("dd.MM.yyyy")})
...
Рейтинг: 0 / 0
Различный формат DateTime при вызове методов контроллера
    #39545970
Crazy_Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну собственно, сейчас так и сделано, Но оно как-то не аккуратненько, доктор :) (ц), хотелось бы без преобразования даты в строку обойтись
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Различный формат DateTime при вызове методов контроллера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]