2012-03-30 226 views
0

首先,我是新来的,所以请裸露在我身边..我有一个下拉列表正在填充一个SQL服务器,我正在使用Visual Studio 2010,cshtml,与剃须刀以及使用MVC模式创建此项目。我想要做的是,当有人从下拉列表中选择一个值来改变它时,它将更新页面,并提供关于该书的信息。使用MVC,Sql和剃须刀(cshtml)

我需要三样东西帮助下任何意见将是巨大的:

  1. 用户从下拉列表一本书如何让书名回控制器
  2. 服务器(检索信息来自服务器的书)和
  3. 返回查看显示。

我开始获取下拉列表。

我的视图看起来像这样

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(); 
    } 
+4

什么是你的问题? – 2012-03-30 21:20:02

回答

3

一个下拉列表,不会引起页面回发到你对自己的控制器。您需要执行以下两项操作之一:

  1. 添加提交按钮,以便用户更改下拉列表,然后单击按钮查看结果。
  2. 使用javascript在元素的change事件上提交表单。

无论使用哪种方式,您都需要将下拉/提交按钮封装在表单中。

选项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(); 
} 
+0

感谢您的帮助..它是有道理的,我倾向于jQuery ..所以有可能没有按钮和jQuery脚本来运行下拉的变化。 – user990951 2012-03-30 21:59:29