我想为我的Online_Ballot设置一个复选框,其中一个复选框包含选民可以投票给特定候选人的候选人。
下面是我的密码。
CandidatesViewModel.cs
public class CandidatesViewModel
{
public IEnumerable<candidates> AvailableCandidates { get;set; }
public IEnumerable<Candidates> SelectedCandidates { get; set; }
public PostedCandidates PostedCandidates { get; set; }
}
public class PostedCandidates
{
public string[] CandidatesId { get; set; }
}Candidates.cs
public class Candidates
{
public int candidates_info_id { get; set; }
public string candidates_fullname { get; set; }
public object Tags { get; set; }
public bool IsSelected { get; set; }
}控制器
public ActionResult Votation(PostedCandidates PostedCandidates)
{
return View();
}视图
@Html.CheckBoxListFor(x => x.PostedCandidates.CandidatesId,
x => x.AvailableCandidates,
x => x.candidates_info_id,
x => x.candidates_fullname,
x => x.SelectedCandidates) 但是,当我试图运行这段代码时,会显示一个错误:
'System.Collections.Generic.IEnumerable‘不包含'PostedCandidates’的定义,也找不到接受'System.Collections.Generic.IEnumerable‘类型的第一个参数的扩展方法'PostedCandidates’(您缺少使用指令还是程序集引用?)
发布于 2015-03-23 04:17:29
您正在声明IEnumerable<Online_Ballot.Models.CandidatesViewModel>类型的模型,并将其用作实例而不是集合。
您需要将模型声明更改为以下内容(假设您要从控制器传递要查看的CandidatesViewModel类型的单个实例):
@model Online_Ballot.Models.CandidatesViewModel或者,您可以将复选框列表生成更改为类似的内容(假设您将集合从控制器传递到视图,并且该集合只有一个元素)。
@Html.CheckBoxListFor(x => x.FirstOrDefault().PostedCandidates.CandidatesId,
x => x.FirstOrDefault().AvailableCandidates,
x => x.FirstOrDefault().candidates_info_id,
x => x.FirstOrDefault().candidates_fullname,
x => x.FirstOrDefault().SelectedCandidates)尽管我建议您使用变更模型声明。
更新
我还注意到,您没有将视图模型的实例传递给视图。
public ActionResult Votation(PostedCandidates PostedCandidates)
{
CandidatesViewModel vm = new CandidatesViewModel();
//process or fill your viewmodel here.
return View(vm);
}https://stackoverflow.com/questions/29203021
复制相似问题