2009-06-15 7 views
12

मैं नीचे एक जैसा ऑब्जेक्ट संपादित करना चाहता हूं। मैं उपयोगकर्ताओं को चुनिंदा सूची उपयोगकर्ताओं के GUSList से एक या अधिक उपयोगकर्ताओं के साथ पॉप्युलेट करना चाहता हूं।एएसपीनेट एमवीसी का उपयोग करके बहु-चयन-सूची कैसे संपादित की जा सकती है?

एमवीसी में मानक संपादन-दृश्यों का उपयोग करके, मुझे केवल तार और बुलियन (नीचे दिखाया नहीं गया) मैप मिलता है। Google पर मिले कई उदाहरण एमवीसी फ्रेमवर्क की शुरुआती रिलीज का उपयोग करते हैं जबकि मैं आधिकारिक 1.0 रिलीज का उपयोग करता हूं।

दृश्य के किसी भी उदाहरण की सराहना की जाती है।

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

उत्तर

6

उपयोग संयोजन में IEnumerable SelectListItem

देखें

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

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

नियंत्रक/मॉडल के साथ Html.ListBox:

 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

कि उपयोगकर्ता मॉडल मानते हुए है ईद और नाम गुण:

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

या देखें मॉडल के साथ

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

नियंत्रक:

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) 
     } 
    } 

दृश्य:

<%= Html.ListBox("users", Model.Users) %> 
1

@ यूरोपीय संघ और जीई-ne < thankyou तो आपके उत्तर के लिए बहुत - असली हो रही थी मूल्यों से मॉडल के मूल्यों की एक सूची को बहुगुणित करने का एक तरीका ढूंढने में परेशानी। अपने कोड का उपयोग करके मैंने अपने संपादन/अद्यतन पृष्ठ में ListBoxFor एचटीएमएल नियंत्रण का उपयोग किया और पूरे मॉडल को वापस मेरे नियंत्रक (मुल्स्प्ले चयनित मानों सहित) पर सहेजें।

<%= 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) 
} 

)%>

संबंधित मुद्दे