2009-08-19 212 views
44

好的,我一直在谷歌搜索幾個小時,並嘗試一切,不能得到任何工作。我正在使用夏普體系結構學習MVC,併爲創建Client對象生成了一些基本表單。我想填充狀態下拉列表與美國各州的列表,並讓用戶從列表中選擇。我能夠填充列表並獲取值(以保存客戶端),但是當我編輯客戶端時,客戶端的當前狀態未被選中。我已在SelectList中設置了所選值:填充ASP.NET MVC DropDownList

<li> 
    <label for="Client_StateProvince">StateProvince:</label> 
    <div> 
     <%= Html.DropDownListFor(c=>c.Client.StateProvince, new SelectList(Model.StateProvinces, "id", "Name", Model.Client.StateProvince), "-- Select State --")%> 
    </div> 
    <%= Html.ValidationMessage("Client.StateProvince")%> 
</li> 

這看起來不夠好。我錯過了什麼?

+0

請考慮重寫您的問題標題以更具體。 – 2009-08-19 18:43:40

+1

我需要做的是編輯一個頁面(域對象)的信息,在這種情況下是一個Client對象。當我去編輯它時,我需要表單的狀態部分是一個包含狀態列表(標準東西)的下拉列表,但是當它處於編輯模式時,它會填充它,我需要它來選擇狀態當前可編輯的對象。我正在填充下拉菜單,但當前狀態未被選中。一旦我將DropDownList的名稱(在這裏用lambda表示)設置爲狀態的Id(我用於下拉列表中的值字段的值),我很高興。 – leebrandt 2009-08-20 00:42:45

回答

78
<%= Html.DropDownListFor(c => c.Client.StateProvince.Id, 
           new SelectList(Model.StateProvinces, 
              "id", 
              "Name", 
              Model.Client.StateProvince), 
           "-- Select State --")%> 

這就行了。

希望這可以幫助別人。

〜Lee

+0

您是對的,第一個參數需要與最後一個參數的類型相同。也爲我工作!謝謝。 – 2011-05-16 18:29:26

7

工作對我來說是完美的thanx!我用它來設置一個子類別父關係:

<%= Html.DropDownListFor(
model => model.Category.ParentId, 
new SelectList(Model.Categories, 
"CategoryId", 
"Name", 
    Model.Categories.Where(x => x.CategoryId == Model.Category.ParentId).Single()))%> 

的Jeroen

2
<%= Html.DropDownListFor(c => c.Client.StateProvince, new SelectList(Model.StateProvinces, "Id", "Name")) %> 

並重寫的ToString()爲StateProvince返回編號,即:

return Id.ToString(); 

這工作,但是不是一個完美的解決方案...

丹尼斯

+0

這是幫助我的唯一解決方案!謝謝! – 2010-12-15 22:11:42

4

我這樣做了。效果很好。

控制器

IFarmModelInterface service2 = new FarmModelRepository(); 
ViewData["Farms"] = new SelectList(service2.GetFarmNames(), "id", "FarmName", "XenApp"); 

查看

<%: Html.DropDownListFor(m => m.Farm, (ViewData["Farms"] as SelectList)) %> 
3
public ActionResult AllUsers() 
{ 
    List<Users> users = userRep.GetUsers(); 
    var listUsers = (from u in users.AsEnumerable() 
        select new SelectListItem 
        { 
         Text = u.UserName, 
         Value = u.UserId.ToString(), 
         Selected = (u.UserId==6) 
        }).AsEnumerable(); 
    ViewBag.ListItems = listUsers; 
    //ViewBag.SelectedItem = 2; 
    return View(); 
} 

在AllUsers.cshtml

<p>@Html.DropDownList("ListItems")</p> 
0
public ActionResult AllUsers() { 
    List<Users> users = userRep.GetUsers(); 
    var listUsers = (from u in users.AsEnumerable() 
        select new SelectListItem 
        { 
         Text = u.UserName, 
         Value = u.UserId.ToString(), 
         Selected = (u.UserId==6) 
        }).AsEnumerable(); 
    // ViewBag.ListItems = listUsers; 
    ViewData["tempEmpList"]=listUsers; 
    return View(); } 

填充下拉

@Html.DropDownList("SelectedEmployee", new SelectList((IEnumerable) ViewData["tempEmpList"], "Id", "Name"))

0

這是查看 - MVC控制器

@Html.DropDownListFor(m => m.Entity, new ABC.Models.DropDownPopulate().MyMethod, new { @class = "form-control input-inline input-medium" }) 

的MyMethod獲取數據列表綁定下拉使用SelectListItems

public List<SelectListItem> MyMethod 
     { 
      get 
      { 
       List<SelectListItem> dropdownList = new List<SelectListItem>(); 
       var items = new DropDown_Bl().GetAll(); 
       foreach (var item in items) 
       { 
        SelectListItem dropdownItem = new SelectListItem(); 
        dropdownItem.Value = item.RnID.ToString(); 
        dropdownItem.Text = item.Description; 
        dropdownList.Add(dropdownItem); 
       } 
       dropdownList.Insert(0, new SelectListItem() { Text = "Please Select", Value = "", Selected = true }); 
       return dropdownList; 
      } 
     } 

GETALL方法在Dropdown_Bl中 - 用於從數據庫中獲取數據列表

public List<My_Table> GetAll() 
     { 
      var Items = _Context.MyRepository.GetMany(q => q.Area == "ASD").ToList(); 
      return Items ; 
     }