Avatar billede simsen Mester
16. januar 2021 - 17:29 Der er 4 kommentarer og
1 løsning

Required opfører sig mærkeligt

Hej,
Jeg har oprettet en partial class og her har jeg sat required på de forskellige felter.

Når jeg kører siden, og ikke udfylder noget i felterne, kommer den frem og fortæller mig, at felterne skal være udfyldt. Altså på nær én felterne nemlig Department.

Når jeg så udfylder alle felter på nær Department (og klikker på knappen igen), så kommer den endelig frem og fortæller at department skal være udfyldt.

Så mit spørgsmål lyder, hvorfor opfører den sig anderledes end f.eks. den anden dropdownlist gender?

Den partial class som VS har oprettet:
namespace Part025EntityFramework.Models
{
    using System;
    using System.Collections.Generic;
   
    public partial class Employee
    {
        public int EmployeeId { get; set; }
        public string Name { get; set; }
        public string City { get; set; }
        public string Gender { get; set; }
        public Nullable<int> DepartmentId { get; set; }
        public Nullable<System.DateTime> DateOfBirth { get; set; }
   
        public virtual Department Department { get; set; }
    }
}

Den Partial class jeg har udfyldt:
namespace Part025EntityFramework.Models
{
    [MetadataType(typeof(EmployeeMetaData))]
    public partial class Employee
    {
    }

    public class EmployeeMetaData
    {
        [Required]
        public string Name { get; set; }
        [Required]
        public string City { get; set; }
        [Required]
        public System.DateTime? DateOfBirth { get; set; }
        [Required]
        public string Gender { get; set; }

        [Required]

        [Display(Name = "Department")]
        public int DepartmentId { get; set; }
    }
}

Og så en del af min create side, hvor de to dropdowns vises:

<div class="form-group">
                @Html.LabelFor(model => model.Gender, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DropDownList("Gender", new List<SelectListItem>
                    {
                        new SelectListItem {Text = "Male", Value="Male"},
                        new SelectListItem {Text = "Female", Value="Female"}
                    }, "Select Gender")
                    @Html.ValidationMessageFor(model => model.Gender, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.DepartmentId, "Department", htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DropDownList("DepartmentId", "Select Department")
                    @Html.ValidationMessageFor(model => model.DepartmentId, "", new { @class = "text-danger" })
                </div>
            </div>
Avatar billede arne_v Ekspert
16. januar 2021 - 18:14 #1
Vildt gaet:

[Display(Name = "Department")]
public int DepartmentId { get; set; }

->

[Display(Name = "Department")]
public int? DepartmentId { get; set; }
Avatar billede simsen Mester
16. januar 2021 - 20:11 #2
Det hjalp desværre ikke :-)
Avatar billede Syska Mester
16. januar 2021 - 22:02 #3
Hvad ændrede du den til?
Avatar billede simsen Mester
17. januar 2021 - 15:42 #4
Hej Syska
Jeg forstår ikke lige, hvad du spørger om?

Jeg forsøgte mig med Arnes skud, og det hjalp desværre ikke. Så lige nu står jeg i samme situation.
Avatar billede Syska Mester
17. januar 2021 - 18:05 #5
Har du brugt "int?" eller "int" ?

Altså nullable eller not null int?

Hvis int, så er 0 jo sat, da det er en value ... Så du skal bruge "int?"
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