MVC3 Razor @Html.DropDownListFor

前端 未结 3 1724
春和景丽
春和景丽 2020-12-08 04:55

I could use some help implementing @Html.DropDownListFor. My objective is to filter the list of Products by Category.

This code will display a list box:



        
相关标签:
3条回答
  • 2020-12-08 05:21

    Your view is strongly typed to a collection of products so I suppose that you need a drop down for each product. If this is the case an editor template would work:

    @model IEnumerable<Sample.Models.Product>
    @Html.EditorForModel()
    

    And then inside ~/Views/Shared/EditorTemplates/Product.cshtml

    @model Sample.Models.Product
    @{
        List<Sample.Models.Category> list = ViewBag.Categories;
        var items = new SelectList(list, "CategoryID", "CategoryName");
    }
    @Html.DropDownListFor(x => x.CategoryID, @items)
    
    0 讨论(0)
  • 2020-12-08 05:33

    here is another way to do what you want.

    In the model I have two entries

      public class Product
      {
         public int CategoryID { get; set; }
         public IEnumerable<SelectListItem> Category { get; set; }
      }
    

    I then populate the SelectlestItem either from a database or statically. In the Index.cs controller

       product model = new product();
    
       model.Category = <whereever you generated the data>;
    
       return View(model);
    

    In the View

        @using (Html.BeginForm("Edit", "Subject", FormMethard.Post, new { id = "genform"}))
        {
           <div class="vertical-space spaced-field">@Html.DropDownListFor(m => m.CategoryID, model,Category)</div>
    
    0 讨论(0)
  • 2020-12-08 05:34

    My recommendation:

    Extend your LINQ data context class with a static function to return a SelectList of all categories, and use Html.DropDownList() to display this list.

    Then, add a controller for this same Action that accepts category ID and return the IEnumerable<Product> list that corresponds to that category.

    0 讨论(0)
提交回复
热议问题