gpt4 book ai didi

c# - 如何使@Html.DropDownList() 允许空值

转载 作者:行者123 更新时间:2023-11-30 16:42:21 25 4
gpt4 key购买 nike

我使用 Visual Studio 从数据库自动生成 Controller 和 View 。在数据库中,有一个表 dbo.Items,它有一个 FOREIGN KEY (CategoryID) REFERENCES Categories(Id)

Items/Create 生成的 View 有这个 block ,强制用户在添加新 Item 时从下拉列表中选择 01 Category,不允许空值:

    <div class="form-group">
@Html.LabelFor(model => model.CategoryID, "CategoryID", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("CategoryID", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.CategoryID, "", new { @class = "text-danger" })
</div>
</div>

如何使 Null 选项可用?

最佳答案

Html.DropDownList() 是一个 html 辅助方法,它将生成用于呈现 SELECT 元素的 HTML 标记。它本身不会做任何“允许/不允许”的事情。

MVC 模型验证框架在您根据 View 模型属性和在其上定义的数据注释提交表单时在服务器端进行模型验证。辅助方法还会生成所需的数据属性,jQuery 验证插件可以使用这些属性进行客户端验证。

要允许在 SELECT 元素中不选择任何选项,请将 CategoryID 属性更改为 nullable int。如果您有 View 模型,您可以在那里更新。

public class YourViewmodel
{
public int? CategoryID { set;get;}
}

您还需要更新您的数据库架构,以便在 CategoryId 列中保存可为 null 的值。如果您使用的是数据库优先方法,则可以更改数据库架构(将列更改为可为空),然后重新生成实体类。

我还建议您使用 DropDownListFor 助手

@Html.DropDownListFor(x=>x.CategoryID,ViewBag.CountryCode as  List<SelectListItem>,
"select one", new { @class = "form-control" })

假设 ViewBag.CountryCode 是您在 GET 操作方法中设置的 SelectListItem 的列表。

关于c# - 如何使@Html.DropDownList() 允许空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46900394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com