2014-09-28 99 views
0

現在我已經在身份加入一個地區到ApplicationUser模型2.0EditUserViewModel需要DropDownListFor()

在UsersAdmin查看,編輯動作,我有以下的股票代碼來顯示/編輯用戶的地區:

<div class="form-group"> 
    @Html.LabelFor(model => model.Region, new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.TextBoxFor(m => m.Region, new { @class = "form-control" }) 
    </div> 
</div> 

如何使該文本框到一個DropDownList,允許用戶從區域名稱的列表,其中地區是ApplicationDbContext的一部分選擇呢?

public class Region 
    { 
     [Key] 
     public Guid ID { get; set; } 
     public string Name { get; set; } 
     public Company Company { get; set; } 

     public Region() 
     { 
      this.ID = Guid.NewGuid(); 
     } 
    } 

回答

1

您可以使用視圖模型。爲了呈現一個下拉您需要在您的視圖模型2個屬性:標量屬性來保存所選擇的值和集合屬性來表示可能值的列表中顯示:

public class MyViewModel 
{ 
    public Guid SelectedRegionID { get; set; } 
    public IEnumerable<SelectListItem> Regions { get; set; } 
} 

您的控制器操作將填充和傳遞給視圖:

public ActionResult Index() 
{ 
    var viewModel = new MyViewModel(); 
    viewModel.Regions = db.Regions.ToList().Select(x => new SelectListItem 
    { 
     Value = x.ID.ToString(), 
     Text = x.Name, 
    }); 

    return View(viewModel); 
} 

,並在相應的強類型的視圖中,您可以使用DropDownListFor幫手:

@model MyViewModel 

<div class="form-group"> 
    @Html.LabelFor(model => model.Region, new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.DropDownListFor(m => m.SelectedRegionID, Model.Regions, new { @class = "form-control" }) 
    </div> 
</div> 
+0

一個後續的問題:WH我從DropDownList中選擇一個選區,然後在此EditView上單擊Save,將MyViewModel交還給Task Edit爲SelectedRegionId具有全零。我如何讓用戶選擇區域回控制器? – davecove 2014-09-28 18:18:52

+0

當您提交表單時,您能否看到發送到服務器的實際有效負載?它看起來怎樣? – 2014-09-28 18:20:39

+0

我該怎麼做? (使用帶內置本地主機的VS2013) – davecove 2014-09-28 18:23:40