2013-05-21 43 views
5

Tôi muốn chọn giá trị mặc định trong danh sách thả xuống trong đó policyId = 7 nhưng không chọn giá trị đó, những gì tôi đang làm sai?mvc 4 thả xuống giá trị mặc định được chọn

Bộ điều khiển:

var pm = new ManagerClass(); 
IEnumerable<myClass> po = pm.GetDataFromDb(); 
IEnumerable<SelectListItem> Policies = new SelectList(po, "PolicyID", "PolicyName", new { PolicyID = 7 }); 
ViewBag.Policies = Policies; 

Xem:

@Html.DropDownListFor(m => m.PolicyID, ViewBag.Policies as IEnumerable<SelectListItem>, new { @class = "dropdown-field"}) 

Trả lời

7

Chỉ cần đặt PolicyID tài sản trên mô hình quan điểm của bạn với giá trị bạn muốn được chọn trước:

var pm = new ManagerClass(); 
var po = pm.GetDataFromDb(); 
ViewBag.Policies = new SelectList(po, "PolicyID", "PolicyName"); 

viewModel.PolicyID = 7; 
return View(viewModel); 

Kể từ DropDownList của bạn được liên kết với thuộc tính PolicyID (m => m.PolicyID), sau đó giá trị của nó sẽ được sử dụng khi quyết định phần tử nào được chọn trước.

+1

Tôi đã thử điều này nhưng không hoạt động. –

+0

Trên trang chỉnh sửa, nó hoạt động nhưng trong trang thêm nó không hoạt động. Tôi cho id để mô hình cũng trong trang thêm như bạn đang làm. –

+1

Tôi không biết bạn đang chỉnh sửa trang Chỉnh sửa và Thêm. Điều này luôn làm việc cho tôi. Hiển thị một ví dụ hoàn chỉnh cho phép tái tạo vấn đề sẽ hữu ích trong việc hiểu rõ hơn về kịch bản của bạn. –

8

Đó là vì nó không thực sự chọn giá trị trong số SelectList.

Trước tiên, để làm cho nó đẹp hơn, hãy đặt các mục trong mô hình quan điểm của bạn để ngăn chặn các diễn viên (đây là thực hành tốt quá):

public class MyModel 
{ 
    public int PolicyID { get; set; } 
    public List<SelectListItem> Policies { get; set; } 
    //rest of your model 
} 

Sau đó cư nó:

var model = new MyModel(); 
model.Policies = po 
    .Select(p => new SelectListItem 
    { 
     Text = p.PolicyName, 
     Value = p.PolicyID.ToString(), 
     Selected = p.PolicyID == currentPolicyId //change that to whatever current is 
    }) 
    .ToList(); 

Sau đó, trong tầm nhìn của bạn, làm:

@Html.DropDownListFor(m => m.PolicyID, Model.Policies, new { @class = "dropdown-field"}) 
0

này là dành cho DropDownList:

Bộ điều khiển:

Danh sách FieldListItems = new List();

FieldListItems.Add (new SelectListItem {Text = "ID dự án", Value = "Project_ID"});

FieldListItems.Add (new SelectListItem {Text = "Tên dự án", Value = "Project_Name"});

ViewBag.SearchByList = new SelectList (FieldListItems, "Value", "Text", selectedValue: Project_ID);

The View:

Phân loại bởi: @ Html.DropDownList ("sortOrder", (SelectList) ViewBag.SortingByList)

Bạn có thể thay đổi SelectedValue trong bộ điều khiển để các mục mà bạn muốn như mặc định

0

Trong trường hợp đó bạn có một menu tĩnh:

1- tạo lớp sau:

public static class StaticMenus 
{ 

    public static List<string> GetGridRowsCount() 
    { 
     List<string> result = new List<string>(); 
     result.Add("3"); 
     result.Add("5"); 
     result.Add("10"); 
     result.Add("20"); 
     result.Add("25"); 
     result.Add("50"); 
     result.Add("100"); 

     return result; 
    } 
} 

2- thêm mã sau vào bộ điều khiển của bạn:

ViewData["CountryList"] = new SelectList(StaticMenus.GetGridRowsCount(),"10"); 

3- thêm mã sau vào chế độ xem của bạn:

@Html.DropDownList("MainGridRowsCount", ViewData["RowsCountList"] as SelectList) 
Các vấn đề liên quan