我已经把我的枚举属性为可为空在我的模型,但是当我提出我的创作形式,我得到“值‘选择’是无效的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值,但该模型状态无效的控制器,并与“价值‘选择视图返回’无效productColor。”
加入空option
标签更新您的value
元素
<select asp-for="productColor" asp-items="@Html.GetEnumSelectList<color>()" class="form-control">
<option value="">Select</option> <!-- notice value="" -->
</select>
如果没有value
标记中指定的浏览器发送option
的内部文本作为所选择的值。所以你的情况的浏览器发送Select
值是不适合的控制器。此代码指示浏览器发送它成功地转换在ASP.NET中null
空值。