2011-12-19 152 views
1

我有這種情況。我有10個需要生成的複選框(這個列表可能會增長並來自數據庫)。如何在asp.net mvc中設置我的複選框?我使用複選框還是複選框?

現在用戶可能只有10箇中的3個。我想要始終向用戶顯示所有10個複選框,但只檢查他們擁有的複選框。

我不確定我的viewmodel和頁面應該是什麼樣子?我不確定要使用哪個html助手。如果我需要一個屬性(bool)來表示數據庫中的每個值,以顯示它們具有的值。

它我的數據庫,我沒有一點價值顯示,如果他們有沒有。我有一個多對多的關係。用戶可以擁有許多功能,並且功能可以擁有許多用戶。

+1

Dude!太多的問題和想法。你的問題是什麼? – gdoron 2011-12-19 18:41:40

回答

0

構建查看模型來描述您的UserFeature對象。然後,您可以使用編輯器模板來顯示覆選框。

public class UserFeatureViewModel 
{ 
    public string Name { get; set; } 
    public IEnumerable<FeatureViewModel> Features { get; set; } 
} 

// and the FeatureViewModel 
public class FeatureViewModel 
{ 
    public string Name { get; set; } 
    public bool IsSelected { get; set; } 
} 

我說構建,這樣做,在你的控制器,視圖模型工廠或維修。該Feature實例這裏硬編碼的,但你想從數據庫檢索它們:

public class UserController : Controller 
{ 
    public ActionResult GetUser(string username) 
    { 
     var model = new UserFeatureViewModel 
     { 
      Name = username, 
      Features = new[] 
      { 
       new FeatureViewModel { Name = "Feature abc", IsSelected = true }, 
       new FeatureViewModel { Name = "Feature def", IsSelected = false }, 
       new FeatureViewModel { Name = "Feature xyz", IsSelected = true } 
      } 
     }; 
     return View(model); 
    } 
} 

你可以用以後的行動與UserFeatureViewModel參數更新等等

最後,編輯模板在~/Views/User/EditorTemplates/FeatureViewModel.cshtml將繼承一個FeatureViewModel,並使用Html.CheckBoxFor幫手:

@model FeatureViewModel 
<span>@Model.Name</span> 
<span>@Html.CheckBoxFor(model => model.IsSelected)</span> 

在您的形式(「父」視圖),使用EditorFor助手來解析部分ial

@Html.EditorFor(model => model.Features)