2012-06-13 40 views
2

好吧,我已經閱讀了一堆文章,而且我仍然迷失了,所以我想我會在這裏提出這個問題。mvc 3 dynamic分類下拉菜單

我想創建一個動態下拉我的「職位」創建視圖。我想從我的Categories.sdf中提取selectList項目,其中有一個名爲categories和兩列「CategoryID」和「CategoryTitle」的表。

我知道我需要通過「postscontroller」將項目拖入viewbag內,以便它們可以傳遞到視圖。但我不確定這會是什麼樣子。再次,我是MVC的新手,所以如果我聽起來像一個塗料,我道歉。

+0

你的問題是? – VJAI

回答

1

我知道我需要通過「postscontroller」拉內的物品進入viewbag

哦,不,你不需要做這樣的事情。

你可以通過定義視圖模型開始:

public class PostViewModel 
{ 
    [DisplayName("Select a category")] 
    [Required] 
    public string SelectedCategoryId { get; set; } 

    public IEnumerable<SelectListItem> Categories { get; set; } 
} 

,你將在你的控制器填充:

public class PostsController: Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new PostViewModel(); 
     model.Categories = db.Categories.ToList().Select(c => new SelectListItem 
     { 
      Value = c.CategoryId, 
      Text = c.CategoryName 
     }); 
     return View(model); 
    } 
} 

,然後有一個對應的強類型的視圖(~/views/posts/index.cshtml):

@model PostViewModel 
@using (Html.BeginForm()) 
{ 
    @Html.LabelFor(x => x.SelectedCategoryId) 
    @Html.DropDownListFor(x => x.SelectedCategoryId, Model.Categories, "-- select --") 
    @Html.ValidationMessageFor(x => x.SelectedCategoryId) 

    <button type="submit">OK</button> 
} 
+0

那麼既然我已經有了一個Post模型的設置,把第一塊代碼放在那裏? –

+0

是的,如果你已經有一個視圖模型,你可以使用該視圖模型。 –