C# 如何更改“选择”上的下拉列表

C# 如何更改“选择”上的下拉列表,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有一个由sql server填充的dropdownlist,我正在使用VisualStudio2010、cshtml和razor,以及使用MVC模式来创建这个项目。我想做的是,当有人从下拉列表中选择一个值进行更改时,它会用有关该书的信息更新页面 我需要以下三方面的帮助: 用户从下拉列表中选择一本书,如何将书名返回控制器 服务器(从服务器检索有关书籍的信息)和 返回要显示的视图 我从让下拉菜单流行起来开始 我的看法是这样的 BookName: @Html.DropDownList("BookNa

我有一个由sql server填充的dropdownlist,我正在使用VisualStudio2010、cshtml和razor,以及使用MVC模式来创建这个项目。我想做的是,当有人从下拉列表中选择一个值进行更改时,它会用有关该书的信息更新页面

我需要以下三方面的帮助:

  • 用户从下拉列表中选择一本书,如何将书名返回控制器
  • 服务器(从服务器检索有关书籍的信息)和
  • 返回要显示的视图 我从让下拉菜单流行起来开始

    我的看法是这样的

    BookName: @Html.DropDownList("BookName", ViewData["BookName"] as IEnumerable<SelectListItem>, new { id = "UserSelectedValue" })
    

    下拉列表不能使页面自行发回控制器。您需要做以下两件事之一:

  • 添加提交按钮,以便用户更改下拉列表,然后单击按钮查看结果
  • 使用javascript在元素的更改事件上提交表单
  • 无论哪种方式,您都需要将下拉/提交按钮包装在表单中

    选择1

    <form>
        BookName: @Html.DropDownList("BookName", ViewData["BookName"] as  IEnumerable<SelectListItem>, new { id = "UserSelectedValue" })
        <input type="submit" value="Show results" />
    </form>
    

    谢谢你的帮助。这是有道理的,我倾向于jquery。所以有可能没有按钮和jquery脚本来运行对下拉列表的更改。
    <form>
        BookName: @Html.DropDownList("BookName", ViewData["BookName"] as  IEnumerable<SelectListItem>, new { id = "UserSelectedValue" })
        <input type="submit" value="Show results" />
    </form>
    
    <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();
    }