GetEnumSelectList在RazorPages中生成一个空的组合框

时间:2018-03-18 08:46:09

标签: asp.net razor

我开始使用ASP.NET Core开发一个新项目并遇到了以下问题:

当我尝试从枚举中填充选择列表时,我只得到一个空的组合框...我正在使用带有Razor Pages的.NET Core 2.0。

我已经在我的实际项目中重构了我想要开始工作的部分的骨架。

枚举:

    namespace EnumTest2
{
    public enum SomeEnum
    {
        Test1,
        Test2,
        Test3
    }
}

班级:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace EnumTest2
{
    public class SomeClass
    {
        [Required]
        public SomeEnum TheEnum { get; set; }
    }
}

页面模型:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace EnumTest2.Pages
{
    public class IndexModel : PageModel
    {
        [BindProperty]
        public SomeClass TheClass { get; set; }

        public void OnGet()
        {

        }

        public void OnPost()
        {

        }
    }
}

观点:

@page
@using EnumTest2
@model EnumTest2.Pages.IndexModel
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

<h2>Index</h2>

<form method="post">
    <select asp-for="TheClass.TheEnum" asp-items="Html.GetEnumSelectList<SomeEnum>()" />
</form>

生成的HTML:

<h2>Index</h2>

<form method="post">
    <select data-val="true" data-val-required="The TheEnum field is required." id="TheClass_TheEnum" name="TheClass.TheEnum" />
<input name="__RequestVerificationToken" type="hidden" value="CfDJ8KHMPQ1QRaBJumCjTcSE3GQtDZZLAoWv1Pcob_bJ71FI-ccIP1AnWuJ2WHdjF6qfWZdPTDNd9RybY0NvzXQ-uMslDfltFcGdUfYDOTzK8KB8qTodZ2BO3rx1c3WqiF_W2pKyrI30QdWzJW1Lvuq5-bI" /></form>

根据迄今为止我发现的SO的教程和答案,这是正确的做法,它应该生成枚举值作为select的选项,但正如你所看到的那样,它会生成一个空的select标签。 / p>

1 个答案:

答案 0 :(得分:2)

我明白了。您不能将select元素关闭为空元素

<select asp-for="TheClass.TheEnum" asp-items="Html.GetEnumSelectList<SomeEnum>()" />

不起作用

<select asp-for="TheClass.TheEnum" asp-items="Html.GetEnumSelectList<SomeEnum>()"></select>

工作

我想一旦标签为空,标签助手就不能再让它“空虚”了