Comment définir la culture pour la date de liaison dans Asp.Net Core?

J'ai un Asp.Net application de Base avec MVC. Je suis à la soumission d'un formulaire avec une date sur le formulaire.

Apparence de la forme (à peu près) comme ceci:

@model EditCustomerViewModel
<form asp-action="Edit">
    <input asp-for="ServiceStartDate" class="form-control" type="date" />
    <input type="submit" value="Update" class="btn btn-success" />
</form>

Contrôleur de l'action est:

[HttpPost]
public async Task<IActionResult> Edit(EditCustomerViewModel viewModel)
{
    //do stuff
    return RedirectToAction("Index");
}

Modèle de vue est:

public class EditCustomerViewModel
{
    public Guid Id { get; set; }

    [DataType(DataType.Date)]
    public DateTime ServiceStartDate { get; set; }

    [DataType(DataType.Date)]
    public DateTime? ServiceEndDate { get; set; }

    //etc.
}

Je suis dans le royaume-UNI, si les dates ne sont pas au format AMÉRICAIN: dd/MM/YYYY. Donc par défaut je suis en soumettant 6/22/2017.

Lors de la recherche sur le soumis modèle de vue du régulateur pendant le débogage, les dates sont nulles si elles ont été soumises au royaume-UNI, mais sont très bien si vous utilisez format AMÉRICAIN. c'est à dire 6/22/2017 me donne null, mais 22/6/2017 est lié à la bonne date.

J'ai essayé d'ajouter ce point à Startup.cs mais elle n'a fait aucune différence:

var supportedCultures = new[] { new CultureInfo("en-GB") };
app.UseRequestLocalization(new RequestLocalizationOptions
{
    DefaultRequestCulture = new RequestCulture("en-GB"),
    SupportedCultures = supportedCultures,
    SupportedUICultures = supportedCultures
});
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-GB");
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-GB");
CultureInfo.CurrentCulture = new CultureInfo("en-GB");
CultureInfo.CurrentUICulture = new CultureInfo("en-GB");

J'ai vérifié les en-têtes HTTP et je vais l'afficher en-tête correcte:

Accept-Language: en-GB,en

Ce que je fais mal? Comment puis-je savoir MVC, Base de liants pour lier les dates au royaume-UNI format?

p.s. Je suis sur VS2017 avec *.csproj fichier de projet, avec des objectifs de cadre .NetCoreApp 1.1

  • Avez-vous déjà rencontré ces deux github.com/aspnet/Localization/issues/136, jerriepelser.com/blog/...
  • Aussi yyyy/MM/dd toujours. si tout le reste échoue.
  • tous les la danse avec CurrentCulture et CurrentUiCulture ne semble pas faire de différence sur les dates de liaison. Je pourrait aller dans le chemin d'accès de la seconde au format que vous mentionnez
  • ouais, obtenu tri - j'ai moi-même confus au premier abord, mais après unpeeling toutes les couches, il a travaillé.
  • Pouvez-vous ajouter de la façon dont vous finalement obtenu ce travail comme une réponse. Je suis intéressé.
  • Réponse ci-dessous est ce que j'ai utilisé. En Plus j'ai eu à régler la culture sur un js côté de l'app, c'était pour ajouter à la confusion.
  • "les dates sont nulles si elles ont été soumises au royaume-UNI, mais sont très bien si vous utilisez format AMÉRICAIN. c'est à dire 6/22/2017 me donne nulle, mais 22/6/2017 est lié à la bonne date" - je suppose que vous avez obtenu de la part après "c'est à dire" mélangé.

InformationsquelleAutor trailmax | 2017-06-22