选择时如何更改下拉列表
本文关键字:下拉列表 何更改 选择 | 更新日期: 2023-09-27 18:29:38
我有一个由sql服务器填充的dropdownlist,我使用Visual Studio 2010、cshtml和razor,并使用MVC模式来创建这个项目。我想做的是,当有人从change的下拉列表中选择一个值时,它会用该书的信息更新页面。
我需要以下三件事的帮助:
- 用户从下拉列表中选择一本书如何将"书名"返回到控制器
- 服务器(从服务器检索有关该书的信息)和
- 返回要显示的视图
我从下拉列表开始。
我的视图看起来像这个
BookName: @Html.DropDownList("BookName", ViewData["BookName"] as IEnumerable<SelectListItem>, new { id = "UserSelectedValue" })
我的控制器:
public ActionResult Index()
{
ViewData["BookName"] = new SelectList(_context.BookName.Select(a => a.Book_Name).Distinct());
return View();
}
下拉列表不能使页面自行返回到控制器。你需要做两件事之一:
- 添加一个提交按钮,以便用户更改下拉列表,然后单击按钮查看结果
- 使用javascript提交元素的更改事件的表单
无论哪种方式,您都需要将下拉/提交按钮包装在表格中。
选项1
<form>
BookName: @Html.DropDownList("BookName", ViewData["BookName"] as IEnumerable<SelectListItem>, new { id = "UserSelectedValue" })
<input type="submit" value="Show results" />
</form>
选项2
<script type="text/javascript">
// assuming you're using jQuery
$(function() {
$('#UserSelectedValue').change(function() {
$(this).parent('form').submit();
});
});
</script>
<form>
BookName: @Html.DropDownList("BookName", ViewData["BookName"] as IEnumerable<SelectListItem>, new { id = "UserSelectedValue" })
<input type="submit" value="Show results" />
</form>
然后你的控制器代码会变成这样:
public ActionResult Index(string bookName)
{
ViewData["BookName"] = new SelectList(_context.BookName.Select(a => a.Book_Name).Distinct());
if (!string.IsNullOrWhiteSpace(bookName))
{
ViewData["Books"] = _context.BookName.Where(b => b.Book_Name == bookName).ToList();
}
return View();
}