2
我有一個視圖,將文本框和複選框的數據從用戶點擊提交時發回並保存到我的數據庫。當視圖第一次加載時,一些文本框會從用戶的數據庫中加載數據,我也希望某些複選框也被預先檢查。以下是我有我的Get方法至今:我應該使用Html.CheckBox還是Html.CheckBoxFor?
//vm is an object of my ViewModel
[HttpGet]
public ActionResult AddOrganization(int peopleID = 0)
{
var peopleModel = db.People.Include("EmployeeContacts").Single(g => g.PeopleID == peopleID);
var contactModel = db.EmployeeContacts.Include("People").Single(g => g.PeopleID == peopleID);
vm.People = new People();
vm.EmployeeContacts = new EmployeeContacts();
vm.OrganizationsOptions = new OrganizationOptions();
// grabs info from db to be populated in the view
vm.People.NID = peopleModel.NID;
vm.People.FirstName = peopleModel.FirstName;
vm.People.LastName = peopleModel.LastName;
vm.People.SID = peopleModel.SID;
vm.EmployeeContacts.Email = contactModel.Email;
vm.EmployeeContacts.PrimaryPhone = contactModel.PrimaryPhone;
var list = new List<AddOrganizationViewModel>
{
new AddOrganizationViewModel{ID = 1, Name = "Admin", AdminChecked = true},
new AddOrganizationViewModel{ID = 2, Name = "Breakdown Report", BreakdownReportChecked = true},
new AddOrganizationViewModel{ID = 3, Name = "Favorites", FavoritesChecked = true},
new AddOrganizationViewModel{ID = 4, Name = "Site Admin", SiteAdminChecked = false},
};
return View("../Setup/AddOrganization", vm);
}
我的視圖模型是這樣的:
public class AddOrganizationViewModel
{
public Music.Models.Organizations Organizations { get; set; }
public Music.Models.People People { get; set; }
public Music.Models.OrganizationOptions OrganizationsOptions { get; set; }
public Music.Models.EmployeeContacts EmployeeContacts { get; set; }
public int ID { get; set; }
public string Name { get; set; }
public bool AdminChecked { get; set; }
public bool BreakdownReportChecked { get; set; }
public bool FavoritesChecked { get; set; }
public bool SiteAdminChecked { get; set; }
}
這是我認爲包含複選框的一部分,但我m不知道我需要在這裏做什麼來將ViewModel,Controller和View鏈接在一起,因爲視圖需要一種AddOrganizationViewModel類型,所以我一直在如何發送複選框列表。
@model Music.ViewModels.AddOrganizationViewModel
@using (Html.BeginForm("AddOrganization", "AddOrganization")){
@Html.AntiForgeryToken()
<legend>OPTIONS</legend>
<div>
@Html.Label("Features: Admin")
@Html.CheckBoxFor(Model => Model.AdminChecked)
</div>
<div>
@Html.Label("Features: Breakdown Report")
@Html.CheckBoxFor(Model => Model.BreakdownReportChecked)
</div>
<div>
@Html.Label("Features: Favorites")
@Html.CheckBoxFor(Model => Model.FavoritesChecked)
</div>
<div>
@Html.Label("Features: Site Admin")
@Html.CheckBoxFor(Model => Model.SiteAdminChecked)
</div>
}
編輯:更新代碼以反映我使用CheckBoxFor所做的更改。
你的意思是'CheckBoxFor(X => x.HasAdminPermissions)'? –
@尼克是啊,只是注意到:) – Thousand
感謝千人,我改變了我的觀點,就像你說的,並使用@ Html.CheckBoxFor指令,但所有的複選框仍然未經檢查。我不需要做一些事情將列表發送到視圖,或者由於它是AddOrganizationViewModel類型而自動發生? – SantasNotReal