2015-03-23 3 views
1

Я хотел бы установить флажок для своего Online_Ballot, где флажок содержит кандидатов, в которых избиратель может голосовать за конкретных кандидатов.Реализация CheckBox

Ниже приведен мой код.

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' может быть найден (вам не хватает указаний по использованию или сборке ссылка?)

+0

Изменить имя параметра Votation – User2012384

+0

Опубликовать код для просмотра в полном размере. Я думаю, проблема связана с кодом, который вы не размещали здесь. –

+0

@model IEnumerable Jen143

ответ

1

Вы объявляете модель типа 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) 

Хотя я бы порекомендовал вам пойти с декларацией об изменении модели.

Update

Я также заметил, что вы не проходя экземпляр вашей модели представления для просмотра.

public ActionResult Votation(PostedCandidates PostedCandidates) 
{ 
    CandidatesViewModel vm = new CandidatesViewModel(); 
    //process or fill your viewmodel here. 
    return View(vm); 
} 
+0

Когда я запускаю программу, он возвращает нулевое значение. – Jen143

+0

@JenalynParagados, так как мой ответ предполагает, что вам нужно передать экземпляр вашей viewmodel в представление. 'CandidatesViewModel vm = new CandidatesViewModel();', а затем передать экземпляр этой модели просмотра для просмотра метода типа 'return view (vm);'. –

+0

Является ли CheckBoxFor значением булевого типа? – Jen143

Смежные вопросы