Большое спасибо! Я пытался с 0: дд / мм / гггг, но это не было достаточно хорошо. Я не думаю, что справился бы с этой проблемой без вашей помощи! Еще раз спасибо!
ема
В этот момент у меня возникла проблема, когда мое действие Get пытается прочитать параметр DateTime в другом формате, который отправляется.
В то время как отправленное DateTime имеет этот формат:0:dd/MM/yyyy
Get Actions ожидает:0:MM/dd/yyyy
Решение (возможно)
Чтобы изменить ожидаемое действие Get, я использую привязку пользовательской модели.
Действие GET
public async Task<IActionResult> Details(int? id, [ModelBinder(typeof(PModelBinder))]DateTime date)
Класс ModelBinder
Теперь вот несколько вещей, которые отсутствуют, и я не знаю, как завершить это правильно:
public class PModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
string theDate = bindingContext.HttpContext.Request.QueryString["date"];
//What should I write inside the []?
//I've tried QueryString["date"] which is the name of the parameter but it says is wrong
DateTime dt = new DateTime();
bool success = DateTime.TryParse(date); //Should I apply ParseExact? How should I do it?
if (success)
{
return new //what should I be returning here? dt?
}
}
}
У меня есть несколько вопросов, помеченных как комментарии в приведенном выше коде, так как я только начинаю понимать привязку пользовательской модели. Надеюсь, кто-нибудь может дать мне несколько советов.
Я следую за этой статьей:
https://weblogs.asp.net/melvynharbour/mvc-modelbinder-and-localization
Но это из2008 !!!, Хотя это кажется действительным, так как это именно та проблема, которую я имею с моим действием GET (различные форматы даты)
Обновление: дополнительная информация
Дата параметра определяется как:
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime FechaLInicioLiq { get; set; }
и сборка URL при вызове этого действия GET имеет такую структуру для параметра даты:
date=10%2F11%2F2017%200%3A00%3A00