c# - DropDownListFor 没有自动选择属性
问题描述
在controller
中,我正在创建ViewModel
并填充其属性:
[HttpGet]
public ActionResult Index()
{
PermissionViewModel vm = new PermissionViewModel()
{
Users = new List<UserViewModel>()
{
new UserViewModel()
{
Id = 1,
Email = "foo.bar@example.com",
IsSelected = false,
Permissions = new List<SelectListItem>()
{
new SelectListItem() { Value = "1", Text="Admin" },
new SelectListItem() { Value = "2", Text="Customer" },
new SelectListItem() { Value = "3", Text="Employeer" }
},
SelectedPermissionId = 2,
}
},
Pagination = new List<SelectListItem>() {
new SelectListItem() { Value = "10", Text = "10" },
new SelectListItem() { Value = "20", Text = "20"}
},
};
return View(vm);
}
现在,我想显示数据。我有问题Permissions
。我设置SelectedPermissionId
为2
,所以我希望它Customer
会被自动选中。
@foreach (var user in Model.Users)
{
<tr>
<td>@user.Email</td>
<td>
@Html.DropDownListFor(x => user.SelectedPermissionId, user.Permissions)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = user.Id }) | @Html.ActionLink("Delete", "Delete", new { id = user.Id })
</td>
<td>@Html.CheckBoxFor(x => user.IsSelected)</td>
</tr>
}
不幸Admin
被选中。为什么会这样?
编辑
我发现如果我移动到Permissions
然后这个:SelectedPermissionId
PermissionViewModel
@Html.DropDownListFor(x => x.SelectedPermissionId, Model.Permissions)
正在工作中。现在Customer
被选中。但我必须在UserViewModel
..
解决方案
我找到了解决方案。我不得不改变:
@Html.DropDownListFor(x => user.SelectedPermissionId, user.Permissions)
对此:
@Html.DropDownListFor(x => user.SelectedPermissionId, new SelectList(user.Permissions, "Value", "Text", user.SelectedPermissionId))
有谁知道为什么这是必要的?
解决方案
您的解决方案很好通常我在下拉列表中使用此代码我认为它比使用助手更容易
<select style="height:auto" class="form-control " id="Permissions" name="Permissions" value="@permission">
<!-- <option value="null"
@if (permission.Text == null) { <text> selected</text> }>
Permissions
</option>
-->
@for (int i = 0; i < ViewBag.Permissions.Count; i++)
{
<option value="@ViewBag.Permissions[i].Text "
@if (permission.Text == ViewBag.Permissions[i].Text ) { <text> selected</text>}>
@ViewBag.Permissions[i].Text
</option>
}
</select>
推荐阅读
- automated-tests - 在赛普拉斯的同一测试中两次调用 cy.server() 是否可以
- swiftui - SwiftUI - 如何使用按钮显示文本,然后使用计时器
- sql-server - 在不授予权限的情况下通过 SQL 查询获取磁盘的全部容量?
- django-rest-framework - Django 可写嵌套序列化器 - 错误非空约束
- java - 我可以在@Value 注释中传递变量来读取属性文件,其键存储在字符串变量中吗?
- php - 我想从此查询中排除一些公司名称
- kubernetes - 从 kubernetes 内部的 InfluxDb 导出数据
- java - 我们可以使用 Liquibase 监控数据库表中新添加的数据吗?
- apache-spark - 我们如何在 Spark 结构化流 2.4.4 中缓存/持久化数据集
- apache-spark - Kubernetes 与 Spark 与 Kubernetes 上的 Spark