2012-03-30 174 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