2014-02-08 87 views
0

沒有具有'UserName'鍵的'IEnumerable'類型的ViewData項。 在視圖中有2個下拉列表 - 對於用戶和角色,提交後我需要爲選擇的用戶保存角色。與角色一切都好,但用戶的麻煩。我有列表中的用戶列表,但我不能讀取數據庫。如果使用Html.TextBox(「用戶名」) - 它的作品,但管理員將手動寫入用戶名,這是不好的。 我不是MVC的專家,所以apreciate任何幫助。 控制器:沒有類型爲'IEnumerable <SelectListItem>'的ViewData項具有'UserName'鍵'

UsersContext db = new UsersContext(); 

    public ActionResult Index() 
    { 
     SelectList list = new SelectList(Roles.GetAllRoles()); 
     ViewBag.Roles = list; 

     List<SelectListItem> items = new List<SelectListItem>(); 
     foreach (var user in db.UserProfiles.ToList()) 
     { 
      SelectListItem li = new SelectListItem 
      { 
       Value = user.UserName, 
       Text = user.UserName 
      }; 
      items.Add(li); 
     } 

     ViewBag.UserName = items; 

     return View(db.UserProfiles.ToList()); 
    } 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Index(string RoleName, string UserName) 
    { 

     SelectList list = new SelectList(Roles.GetAllRoles()); 
     ViewBag.Roles = list; 
     return View(); 
    } 

模型SimpleMembershipprovider,是與項目創建的。

查看:

@model IEnumerable<UserProfile> 
@Html.DropDownList("UserName", ViewBag.UserName as SelectList) - here mistake 

我應該怎麼做來解決?

回答

0

試試這個:

@model IEnumerable<UserProfile> 
@Html.DropDownList("UserName",new SelectList(ViewBag.UserName, "Value", "Text")) 

或更改UserNameSelectList的類型,然後在這裏進行修改:

ViewBag.UserName = new SelectList(items, "Value", "Text"); 
//instead of ViewBag.UserName = items; 
0

類型的項目爲List<SelectListItem>,不SelectList。嘗試:

ViewBag.UserName as List<SelectListItem> 
1

問題出在下面的代碼 -

public ActionResult Index(string RoleName, string UserName) 
{ 
    SelectList list = new SelectList(Roles.GetAllRoles()); 
    ViewBag.Roles = list; 
    return View(); 
} 

在上面的代碼中你永遠不啓動 - ViewBag.UserName,但你的觀點是希望在ViewBag UserName屬性(你只發起的角色)。你啓動它,問題就會完成。

1

這樣做:

ViewBag.cityid = new SelectList(db.hr_pr_cities, "CityID", "Name"); 

,並考慮這樣的:

@Html.DropDownList("cityid", null, "Select City", null) 
相關問題