2012-08-16 58 views
2

我目前有一羣用戶坐在會員數據庫中,我希望能夠在MVC應用程序中創建一個頁面,該頁面將被設計爲撤回所有用戶信息並將其顯示在頁面上,我已創建但是,下面我想能夠顯示在網格視圖,而不是一個列表中的數據解決方案:使用MVC從Membership .Net顯示用戶配置文件信息?

控制器:

public ActionResult Index() 
     { 
      var systemUsers = Membership.GetAllUsers(); 
      return View(systemUsers); 
     } 

查看:

<ul> 
     <%foreach (MembershipUser user in Model){ %> 

     <li><%=user.UserName %></li> 

     <% }%> 
    </ul> 

是否有人可以告訴我怎麼可以獲取用戶數據和d是否在視圖上的網格視圖中顯示它?我在想,我可以有一個模型存儲數據,然後傳遞給視圖,並且這個模型可以由控制器更新?但我不確定哪種數據類型可以用來存儲用戶數據,然後傳遞給網格視圖?

感謝:-)

+0

我只想找到一些方法將「systemUsers」var傳遞給Grid View? – user723858 2012-08-16 15:04:00

+0

可以在您的視圖中強制鍵入模型,即'@model IEnumerable ',或者也可以只使用ViewBag。 'ViewBag.Users = systemUsers;'在控制器上,然後在視圖中使用它。但我會建議看看ViewModels。 – StuartLC 2012-08-16 15:16:28

回答

1

直接在您的視圖使用MembershipUser是不是一個很純粹的MVC方法,IMO。

IMO你可以創建一個包含只需要在控制器和視圖之間傳遞領域的特定視圖模型,就像這樣:

public class UserViewModel 
{ 
    public Guid UserId {get; set;} 
    public string UserName {get; set;} 
    // etc 
} 

所有用戶獲取你的控制器之後,您就可以投影成員用戶遍及您的UserViewModel對象,例如使用LINQ或AutoMapper,然後將這個枚舉傳遞給View。

public ActionResult Index() 
{ 
    var systemUsers = Membership.GetAllUsers();  
    var vmUsers = new List<UserViewModel>(); 
    foreach (MembershipUser u in Membership.GetAllUsers()) 
    { 
     vmUsers.Add(new UserViewModel() 
     { 
      UserId = (Guid)u.ProviderUserKey, 
      UserName = u.UserName, 
      // etc 
     }); 
    } 
    return View(vmUsers); 
} 

我不知道你所說的「的GridView」的意思(這是MVC,不是WebForms的),但MVC WebGrid應該做的罰款:

@model IEnumerable<MyNamespace.UserViewModel> 
@{ 
    var grid = new WebGrid(Model); 
} 

<div id="grid"> 
    @grid.GetHtml() 
</div> 

顯然,你會想捏捏看起來和感覺有點。

+0

我剛剛嘗試 - var users = new List(); systemUsers.ForEach(u => users.Add(new UserInfoModel(){UserId = u.UserId,UserName = u.UserName})); – user723858 2012-08-16 15:21:01

+0

然而,該應用程序無法識別「List()」,並且還說我的var(systemUsers)沒有一個名爲「ForEach」的方法 – user723858 2012-08-16 15:22:20

+0

@ user723858 - 道歉 - 我更新了代碼 - 「foreach」只會做以及。 – StuartLC 2012-08-16 15:33:21

相關問題