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(非空).
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)
| 归档时间: |
|
| 查看次数: |
25850 次 |
| 最近记录: |