将初始空行插入选择列表MVC LINQ SQL

Joh*_*ohn 20 asp.net asp.net-mvc

我有以下代码在我的formViewModel中传递给我的View.

        var ownerValues = aspnet_Users
            .OrderBy(u => u.Surname)
            .Select(u => new KeyValuePair<int, string>(u.UserId, u.Surname + " " + u.Forename.ToString() + " [" + u.UserName.ToString() + "]"));
        this.OwnersList = new SelectList(ownerValues, "Key", "Value", incidentAction.OwnerId);
Run Code Online (Sandbox Code Playgroud)

当我在资源管理器中运行视图时,我的下拉列表默认为第一个项目,我希望它默认为空白行.

所以我的计划是插入一个userId = null的初始行,然后是一个空字符串而不是'please select'或类似的东西.

任何人都可以告诉我如何在我认为的一行代码上执行此操作,不知道从哪里开始.

谢谢

Muh*_*hid 32

渲染SelectList时,您可以执行类似的操作

<%:Html.DropDownListFor(x => x.ApprovalType, Model.ApprovalTypes,"")%>
Run Code Online (Sandbox Code Playgroud)

如果你想要强类型列表或者你可以尝试

<%:Html.DropDownList("ApprovalType", Model.ApprovalTypes, "") %>
Run Code Online (Sandbox Code Playgroud)

在两个示例中,Model.ApprovalTypes包含SelectList或SelectListItem列表.最后的空字符串参数是可选标签,其值也是空字符串
编辑当您尝试使用数据注释验证它时,插入带有某些值的标签(空字符串或其他内容)也会产生问题.选择空标签不会触发错误消息,因为其他答案中建议的关联值为-1(非空).


Bal*_*a R 8

userid不能为null(因为它是int)但如果​​-1有效,你可以试试

 this.OwnersList = new SelectList(new[]{new KeyValuePair<int, string>(-1, "please select")}.Union(ownerValues), "Key", "Value", incidentAction.OwnerId);
Run Code Online (Sandbox Code Playgroud)