2012-03-21 37 views
7

Tôi có nhiều danh sách thả xuống cho cùng một danh sách lựa chọn trong giao diện và muốn đặt mục thả xuống được chọn theo vòng lặp.Đặt mục thả xuống được chọn MVC

Làm cách nào tôi có thể đặt một mục danh sách thả xuống cụ thể được chọn trong danh sách thả xuống mvc.

Vui lòng trợ giúp.

Trả lời

8

Phương thức Html.DropDownList có nhiều tham số, một trong số đó là List<SelectListItem>. Trường hợp cá nhân của SelectListItem là nơi bạn thiết lập các Selected tài sản:

var item = new SelectListItem() { 

    Selected = /* condition */, 

    Value = "Some Value", 
    Text = "Some Text" 
}; 

Hoặc:

Tạo một bộ sưu tập SelectList đó cho thấy nhiều SelectedValue tài sản:

Model.YourSelectList = new SelectList(items /* List<SelectListItem> */, 
             "Value", 
             "Text", 
             37 /* selected value */); 
+0

Cảm ơn, tôi đã làm bên dưới mã để đặt trong giao diện của tôi cho từng danh sách. –

+0

@ { ViewData ["Sectors"] = new SelectList (Model.SectorList, "MainCategoryId", "CatName", "37"); } @ Html.DropDownList ("SectorId" + i, (IEnumerable ) Chế độ xem ["Ngành"], "- Chọn -", mới {@class = "inputbox-small"}) –

+0

Và? ! Tôi hy vọng bạn không đặt tất cả chúng thành 'true'. Điều đó sẽ đánh bại mục đích thiết lập thuộc tính 'Đã chọn' ... – xandercoded

2

Khi xây dựng các SelectList , bạn có thể đặt mục đã chọn đang được xây dựng bằng cách sử dụng http://msdn.microsoft.com/en-us/library/dd460123.aspx

Hoặc bạn có thể đặt nó trên một cá nhân SelectListItem qua thuộc tính Selected (http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlistitem.selected.aspx) và sử dụng hàm tạo tham số đơn của danh sách chọn hoặc chuyển trực tiếp đến phương thức DropDownList.

2

Sử dụng trình trợ giúp HTML ListBoxFor.

@Html.ListBoxFor(m => m.MyPropertyId, Model.MySelectList) 

Để xây dựng danh sách các mục, bạn có thể sử dụng danh sách MultiSelectList. Ví dụ, trong điều khiển của bạn:

public ActionResult Index() 
{ 
    // Get a collection of all product id's that should be selected. 
    int[] productIds = _service.GetSomeProductIds(); 

    // Make a new select list with multiple selected items. 
    ViewBag.List = new MultiSelectList(
     _service.Products, 
     "Id",     // Name of the value field 
     "Name",     // Name of the display text field 
     productIds);   // list of selected product ids 

    return View(); 
} 

Sau đó, theo quan điểm của bạn:

@Html.ListBoxFor(m => m.ProductIds, (IEnumerable<SelectListItem>)ViewBag.List) 
+0

Nhờ bạn ..:) –

0

phương pháp MVC để ràng buộc danh sách tùy chỉnh để DropDownList và chọn mục tự động nếu bạn cần biết thêm chi tiết, bình luận dưới đây

Tạo Phần

@{ 
    List<SelectListItem> list = new List<SelectListItem>(); 
    list.Add(new SelectListItem { Text = "SALE", Value = "SAL" }); 
    list.Add(new SelectListItem { Text = "PURCHASE", Value = "PUR" }); 
} 

<div class="form-group"> 
    @Html.LabelFor(model => model.SaleOrPurchase, htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10">   
     @Html.DropDownListFor(model => model.SaleOrPurchase, list, "-- Select Status --", new {@class= "form-control" }) 
     @Html.ValidationMessageFor(model => model.SaleOrPurchase, "", new { @class = "text-danger" }) 
    </div> 
</div> 

EDIT Phần

 List<SelectListItem> list = new List<SelectListItem>(); 
    list.Add(new SelectListItem { Text = "SALE", Value = "SAL" }); 
    list.Add(new SelectListItem { Text = "PURCHASE", Value = "PUR" }); 

    IEnumerable<SelectListItem> myCollection = list.AsEnumerable(); 

    ViewBag.SaleOrPurchase = new SelectList(myCollection, "Value", "Text", transactionTbl.SaleOrPurchase.ToString().Trim()); 
Các vấn đề liên quan