Avatar billede simsen Mester
17. januar 2021 - 16:04 Der er 1 løsning

Mvc og required

Jeg har et andet problem med required og dato felter.

Det jeg helst vil have er et dato tekstfelt (i edit visning), som så viser den dato, der er fra databasen.

Altså hvor jeg i Models viser følgende;

[Required]
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:dd-mm-yyyy}", ApplyFormatInEditMode = true)]
        public System.DateTime? DateOfBirth { get; set; }

Og så vil jeg i Controlleren vise datoen, som er i databasen.
DateTime dateofbirth = (DateTime)employee.DateOfBirth;
            ViewBag.DateOfBirth = dateofbirth.ToShortDateString();

Når jeg run to cursor, så kan jeg se, at den tager den rigtige dato ind, den vises bare ikke, der står stadig dd-mm-åååå.

--------------------------

Næste jeg har forsøgt er med en alm tekstfelt, hvor der står følgende i modellen:
[Required]       
        [DisplayFormat(DataFormatString = "{0:dd-mm-yyyy}", ApplyFormatInEditMode = true)]

Og I controlleren fjerner jeg så ViewBag for DateOfBirth.

Nu kommer den så rigtig frem med i feltet at skrive 31-12-1966,

Men når jeg så forsøger at gemme, får jeg at vide, at "The field DateOfBirth must be a date." (nu taler den lige pludselig engelsk med mig (jeg har en dansk sproget google browser).

Jeg har her så forsøgt at tilføje følgende i Web.config
<system.web>
    <compilation debug="true" targetFramework="4.7.2" />
    <httpRuntime targetFramework="4.7.2" />
    <globalization fileEncoding="utf-8" requestEncoding="utf-8" culture="da-DK" uiCulture="da-DK" />
  </system.web>

Og I Global.asax.cs
public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }

        protected void Application_BeginRequest()
        {
            CultureInfo info = new CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.ToString());
            info.DateTimeFormat.ShortDatePattern = "dd-MM-yyyy";
            info.DateTimeFormat.FullDateTimePattern = "dd-MM-yyyy hh:mm:ss";
            System.Threading.Thread.CurrentThread.CurrentCulture = info;
        }
    }

det hjælper ingenting.

Når jeg så forsøger at google mig, kan jeg se en del af problemet (for 127 år siden) og hver løsning de kommer frem med, har ikke hjulpet mig noget som helst - udover, at Index nu viser datoerne på en meget mærkeligmåde. Som f.eks. 31-00-1966 (i db står den til 31-12-1966). Det sidste tror jeg helt sikkert er en fejl40, i forhold til jeg har prøvet at ændre dit og dat i diverse jquery filer, som der er blevet foreslået for at løse ovennævnte problem.

Hvis I ikke kan finde hoved og hale i det, jeg har skrevet, så bare spørg :-)

Vh
Simsen
Avatar billede simsen Mester
18. januar 2021 - 11:07 #1
Jeg har oprettet ny solution/project og så ikke ændret andet end i Employee modellen.

Her fandt jeg så ud af det var følgende linje der fucker op;

[DisplayFormat(DataFormatString = "{0:dd-mm-yyyy}", ApplyFormatInEditMode = true)]

Så var det nemt for mig at søge på det, og her skrev en et forslag om at slette ApplyFormatInEditMode = true og det gjorde tricket, nu kommer den ikke frem og fortæller mig, at det skal være en dato format.

Nu vil jeg så teste lidt videre om, jeg ikke kan bruge den der [DataType(DataType.Date)] - den er jeg nemlig lidt lun på :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester