2014-09-22 13 views
2

我正在運行一個MVC5網站,並嘗試將它從使用單選按鈕切換到複選框。我在這個網站上閱讀了很多其他的例子,但似乎無法使它工作。我當前的ViewModel作爲NULL發佈到控制器。這是它目前的樣子:從無線電模式切換到複選框

public class ViewModel { 
    public string SelectedLeader { get;set;} 
    public IEnumerable<Personnel> Team { get;set; } 
} 

public class Personnel : TableEntity { 
    ... other attributes here 
    public bool IsLead {get;set;} 
} 

的SelectedLeader保持了單選按鈕選定元素的RowKey的賽道,所以想我可以切換這IEnumerable的,但仍比其他例子看起來不正確。我的HTML看起來像這樣:

@using (Html.BeginForm()) 
{ 
other stuff on page 
    @foreach (var person in Model.Team) { 
     ... print other stuff 
     @Html.CheckboxFor(e => person.IsLead , new { [email protected] }) 
     @Html.HiddenFor(e => person.RowKey) 
    } 
} 

public ActionResult Edit(ViewModel viewModel) { 
    ... 
} 

當回發到服務器,實際上隊回來爲空值(與相同但SelectedLeader沒有使用ATM)。我相信我設置CheckboxFor的方式可能有問題,但它確實設置了其初始設置。

任何想法?謝謝你。

史蒂夫

+2

這是非常有名的問題。基本上你需要在標記中使用'for'而不是'foreach',這樣你的助手看起來像這樣:'@ Html.HiddenFor(m => m [i] .RowKey)''。請注意,此處lambda的右側取決於lambda的左側。這是它應該如何在剃刀,其他方式通常表明標記有問題 – Andrei 2014-09-22 23:33:13

+0

啊,很高興知道 - 真正瞭解這個建議。明天早上將嘗試改變!嗯,無法想象如何給你聲望。 – 2014-09-23 01:14:39

回答

0

安德烈是正確的。它似乎沒有與IEnumerable(甚至使用ElementAt(i)) - 我必須改變我的ViewModel IList,現在它工作太棒了。真正感謝幫助。