2011-09-26 33 views
2

我有一個「權限」的集合。每個權限都有三個屬性:Id,Name和HasPermission。因此,作爲一個例子,考慮以下對象:如何綁定CheckBoxFor

public class AccessPerm 
{ 
    int PermId {get;set;} 
    string PermName {get;set} 
    bool HasPerm {get;set;} 
} 

public class UserProfile 
{ 
    Collection<AccessPerm> UserPerms {get;set;} 
} 

所以我想用CheckBoxFor助手創建複選框,這樣一個可以設置用戶的權限。如果您選中該框,則HasPerm應該爲true。如果取消選中它,HasPerm應該是false。我遇到的問題是我沒有看到將PermId和HasPerm屬性綁定到複選框的方法。我使用下面的代碼來綁定HasPerm屬性,但它沒有用,因爲我不知道PermId。

<% 
    for(int ix=0; ix< Model.UserProfile.Perms.Count; ix++) 
    { 
    Html.CheckBoxFor(model => model.UserProfile.Perms[ix].HasPerm); 
    } 
%> 

此代碼確實綁定了HasPerm,並且該值是正確的。但是,由於我沒有身份證,我無法做任何事情。請指教。

回答

4

你可以把它作爲隱藏字段:

<% for(int ix = 0; ix < Model.UserProfile.Perms.Count; ix++) { %> 
    <%= Html.HiddenFor(model => model.UserProfile.Perms[ix].PermId) %> 
    <%= Html.CheckBoxFor(model => model.UserProfile.Perms[ix].HasPerm) %> 
<% } %> 

這樣你會得到相同的列表中包含的ID您的POST控制器動作,以及它是否被選中。

+0

謝謝Darin!好吧,我覺得自己沒有意識到這一點。大聲笑......但我正在我的第一個MVC網站上工作,所以有時我會感到困惑。再次感謝! – essedbl

0

您可以嘗試構建一個SelectList對象並將其綁定到複選框列表。