it-swarm-tr.com

ASP.NET MVC Core'da açılır liste için enum kullanımı

Jilet görünümünde etiket yardımcısını kullanarak ASP.NET MVC Core'da bir enum özelliğine sahip bir açılır liste oluşturmaya çalışıyorum:

İşte model:

public class PersonalMember : Member
{
    [Required, Display(Name = "First Name")]
    public string FirstName { get; set; }

    [Required, Display(Name = "Last Name")]
    public string LastName { get; set; }

    [EnumDataType(typeof(Gender))]
    public Gender GenderType { get; set; }
}

public enum Gender
{
    Male = 1,
    Female = 2
}

Görünümdeki bir formun parçası:

<div class="form-group">
    <label asp-for="GenderType" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <select asp-for="GenderType" asp-items="Html.GetEnumSelectList<GenderType>()">
            <option selected="selected" value="">Please select</option>
        </select>
        <span asp-validation-for="GenderType" class="text-danger" />
    </div>
</div>

Yaşadığım sorun, Html.GetEnumSelectList 'dan sonra GenderType' nin tanınmaması ve bir hata olarak gösterilmesidir.

Bunun nasıl çözüleceğini bilen biri var mı?

33
David Sharpe

GenderType, Enum türünden değil, mülkiyet adınızdır. GetEnumSelectList yöntemi, modelinizdeki özelliğin adını değil, Numaralandırma türünü vermenizi bekler.

Bunu dene:

Html.GetEnumSelectList<Gender>()
42
ADyson

Yanlışlıkla Cinsiyet yerine GenderType kullandığını düşünüyorum. Doğru sözdizimi 

<select asp-for="GenderType" asp-items="Html.GetEnumSelectList<Gender>()">
    <option selected="selected" value="">Please select</option>
</select>here
20
Kostas

Razor sözdizimini kullanabilirsiniz:

@Html.DropDownList("StudentGender", 
    Html.GetEnumSelectList<Gender>(),
    "Select Gender",new { @class = "form-control" })
9
Faishal Ahammad

Ben de aynı sorunu yaşadım, bir çözüm arayan kafamı yaktım!

Bu durumu çözebilir ve aşağıdaki gibi görüşünüzün üstündeki modelinizi örnekleyebilirsiniz:

@using CRM.Model;

@ YourSolution.Model kullanarak

Evet, çok garip geliyor ama inan bana, işe yarıyor! Cevabımı kendi yazıma yaz.

ASP.NET Core MVC'de ENUM Etiket Yardımcısı'nı seçin

3
Rogerio Azevedo

Aşağıdaki benim için çalıştı. Bu gereklidir ve bunun nedeni, enum'un kendisinin model olarak kullandığınız sınıfın kapsamı altında ilan edilmiş bir sınıf olmasıdır.

<select asp-for="Status" class="form-control" asp-items="@Html.GetEnumSelectList<Cart.CartStatus>()"></select>

referans için modelimin altında (çalışma devam ediyor)

 public class Cart
    {
        public int CartId { get; set; }
        public List<Order> Orders { get; set; }
        [Required]
        public string UserId { get; set; }
        public DateTime DeliveryDate { get; set; }
        public CartStatus Status { get; set; }
        public enum CartStatus
        {
            Open = 1,
            Confirmed = 2,
            Shipped = 3,
            Received = 4
        }
    }
0
Daniel Paiva

cinsiyet kullanıyorsanız asp-items = "Html.GetEnumSelectList -GenderType- ()" yerine GenderType

asp-items = "Html.GetEnumSelectList -Gender- ()" gibi

0
Mehdi