2009-06-15 20 views
12

Aşağıdaki gibi bir nesneyi düzenlemek istiyorum. UsersSelectedList'in UsersGrossList'ten bir veya daha fazla Kullanıcı ile doldurulmasını isterim.Asp.net mvc kullanarak çoklu seçim listesi nasıl düzenlenebilir?

Mvc'deki standart düzenleme görünümlerini kullanarak, yalnızca dizeleri ve booleanları (aşağıda gösterilmemiştir) eşleştiriyorum. Google'da bulduğum çoğu örnek, mvc çerçevesinin ilk sürümlerini kullanırken resmi 1.0 sürümünü kullanıyorum.

Görünümün tüm örnekleri takdir edilmektedir.

IEnumerable SelectListItem

Görünüm

  <% using (Html.BeginForm("Category", "Home", 
     null, 
     FormMethod.Post)) 
     { %> 
     <%= Html.ListBox("CategoriesSelected",Model.CategoryList)%> 

     <input type="submit" value="submit" name="subform" /> 
     <% }%> 

Kontrolör/Model ile birlikte

public class NewResultsState 
{ 
    public IList<User> UsersGrossList { get; set; } 
    public IList<User> UsersSelectedList { get; set; } 
} 

cevap

6

Kullanım Html.ListBox: o Kullanıcı modelini varsayarsak

 public List<CategoryInfo> GetCategoryList() 
    { 
     List<CategoryInfo> categories = new List<CategoryInfo>(); 
     categories.Add(new CategoryInfo{ Name="Beverages", Key="Beverages"}); 
     categories.Add(new CategoryInfo{ Name="Food", Key="Food"}); 
     categories.Add(new CategoryInfo { Name = "Food1", Key = "Food1" }); 
     categories.Add(new CategoryInfo { Name = "Food2", Key = "Food2" }); 
     return categories; 
    } 

    public class ProductViewModel 
    { 
     public IEnumerable<SelectListItem> CategoryList { get; set; } 
     public IEnumerable<string> CategoriesSelected { get; set; } 

    } 
    public ActionResult Category(ProductViewModel model) 
    { 
     IEnumerable<SelectListItem> categoryList = 
           from category in GetCategoryList() 
           select new SelectListItem 
           { 
            Text = category.Name, 
            Value = category.Key, 
            Selected = (category.Key.StartsWith("Food")) 
           }; 
     model.CategoryList = categoryList; 

     return View(model); 
    } 
8

Kimliği ve Adı özelliklere sahiptir:

Veya Görünüm Modeli ile

public class ViewModel { 
    public Model YourModel; 
    public IEnumerable<SelectListItem> Users; 
} 

Denetleyici:

var usersGrossList = ... 
var model = ... 

var viewModel = new ViewModel { 
    YourModel = model; 
    Users = usersGrossList.Select(
     x => new SelectListItem { 
      Text = x.Name, 
      Value = x.Id, 
      Selected = model.UsersSelectedList.Any(y => y.Id == x.Id) 
     } 
    } 

Görünüm:

Cevabınız için < teşekkür çok eu-ge-ne @
<%= Html.ListBox("users", Model.Users) %> 
1

- Gerçek başlamıştı modelden ve gelen değerlerden oluşan bir listeyi çok yönlü bir şekilde bulmakta sorun. Kodunuzu kullanarak Edit/Update sayfamda ListBoxFor Html denetimini kullandım ve tüm modeli Save (Denetleyici) seçeneğine (denetleyiciye seçili değerler dahil) aktardım.

<%= Html.ListBoxFor(model => model, Model.UsersGrossList.Select( 
x => new SelectListItem { 
    Text = x.Name, 
    Value = x.Id, 
    Selected = Model.UsersSelectedList.Any(y => y.Id == x.Id) 
} 

)%>