c# - 您可以使用@Html.DropDownList onchange 从控制器调用函数吗?
问题描述
说我有
public async Task<IActionResult> View()
{
ViewData["Employee"] = new SelectList(_userManager.Users.ToList(), "Id", "FullName");
List<ScreenshotItem> screenshotItems = await _context.ScreenshotItems.ToListAsync();
ScreenshotViewModel model = new ScreenshotViewModel();
model.ScreenshotItems = screenshotItems;
return View(model);
}
然后我只是显示图像:
@Html.DropDownList("Id", (SelectList) ViewBag.Employee, new {onchange = "View()"}))
@foreach (var ss in Model.ScreenshotItems)
{
<div>
<img src="@ss.Path" alt="@ss.Path"/>
<label>@ss.EmployeeId</label>
</div>
}
我想要完成的是我想使用 DropDownList 过滤列表,所以每次更改下拉列表时我都希望更新列表。这可能吗?
解决方案
根据您的 ViewModel,在您的视图中,您将拥有如下内容:
@using Project.Path.To.Your.ScreenshotViewModel
@model ScreenshotViewModel
@{
List<SelectListItem> listItems = new List<SelectListItem>();
Model.ScreenshotItems.ToList().ForEach(x => {
listItems.Add(new SelectListItem { Text = x.EmployeeName, Value = x.EmployeeId.ToString() });
});
@Html.DropDownList("selectList", listItems, new { @onchange = "foo()" })
<ul id="UList">
@foreach (var i in Model.ScreenshotItems)
{
<li tagValue="@i.EmployeeId">
<img src="@i.Path" alt="@i.Path"/>
<label>@i.EmployeeName</label>
</li>
}
</ul>
}
并且,在该视图的底部,您可以添加或捆绑此 javascript 代码:
<script src="~/Scripts/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
function foo() {
var empName = $("select#selectList :selected").text();
var empID = $("select#selectList :selected").val();
//alert(empName);
$('ul#UList').find('li').each(function (index, el) {
//alert($(this).attr('tagValue'));
$(this).attr('tagValue') == empID ? $(this).removeClass('hidden') : $(this).addClass('hidden');
});
}
</script>
您将在需要时自定义此代码。例如,最好将部门 ID 用作“tagValue”属性,这样您就可以通过从下拉列表中选择部门名称来过滤属于特定部门的所有员工。此外,您可以将标签更改为具有相同类属性<ul><li>
的嵌套s。<div>
不要忘记包括引导程序。
希望这可以帮助。
推荐阅读
- sql-server - 将(sql)数据类型varchar转换为float时出错...但没有什么是float
- javascript - ActiveX 证书
- java - 您如何为搜索引擎搜索设置布尔值与在 android studio 上的 webView 中输入的 URL
- html - 将样式添加到具有已知类的 div 的第二个孩子
- ios - 新 Apple 登录与 Google 登录冲突,生成 2 个用户帐户
- javascript - Redux,渲染信息的时机
- microsoft-graph-api - 在 Azure AD 中更新用户的 accountEnabled 属性所需的最低权限是多少?
- sql-server - 使用 terraform 添加 azure SQL Server 登录
- node.js - MongoDB - 更新对象删除对象中发送数组中的项目(嵌套更新)
- excel - 对于 Excel 工作表中的每个填充单元格,请保留冒号前的值