Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用视图中的选择列表将null值插入到可为null的枚举属性中?_C#_Asp.net Core Mvc - Fatal编程技术网

C# 如何使用视图中的选择列表将null值插入到可为null的枚举属性中?

C# 如何使用视图中的选择列表将null值插入到可为null的枚举属性中?,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,我已在模型中将enum属性设置为可为Null,但在提交创建表单时,我得到的“值”Select“对productColor无效。” 我的模型: public class product { public int productId { get; set; } public string productName { get; set; } public color? productColor { get; set; } }

我已在模型中将enum属性设置为可为Null,但在提交创建表单时,我得到的“值”Select“对productColor无效。”

我的模型:

  public class product
    {
        public int productId { get; set; }
        public string productName { get; set; }
        public color? productColor { get; set; }
    }

    public enum color
    {
        Red, Green, Blue
    }
我的创建视图:

            <div class="form-group">
                <label asp-for="productColor" class="control-label"></label>
                <select asp-for="productColor" asp-items="@Html.GetEnumSelectList<color>()" class="form-control">
                 <option>Select</option>
                </select>
                <span asp-validation-for="productColor" class="text-danger"></span>
            </div>
我的控制器:

public async Task<IActionResult> Create([Bind("productId,productName,productColor")] product product)
        {
            if (ModelState.IsValid)
            {
                _context.Add(product);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            return View(product);
        }
结果:

表单似乎为productColor值设置了null,但模型状态在控制器上无效,视图返回“值”Select“对productColor无效”。

通过添加空值标记更新选项元素

如果没有指定的值标记,浏览器会将选项的内部文本作为选定值发送。所以,在您的情况下,浏览器发送不适合控制器的选择值。此代码指示浏览器发送空值,该值在ASP.NET中成功转换为null。

通过添加空值标记更新选项元素


如果没有指定的值标记,浏览器会将选项的内部文本作为选定值发送。所以,在您的情况下,浏览器发送不适合控制器的选择值。此代码指示浏览器在ASP.NET中成功地转换为NULL的空值。

可能的副本可能考虑不适用或不枚举值,而不是试图不选择可能的副本,可以考虑不适用或不枚举值,而不尝试不做选择。
<select asp-for="productColor" asp-items="@Html.GetEnumSelectList<color>()" class="form-control">
        <option value="">Select</option> <!-- notice value="" -->
</select>