2016-05-12 33 views
0

很簡單..所以我想。這是NopCommerce的一個插件頁面,但我不認爲這是在這裏玩。MVC Razor CheckBoxFor()不顯示屬性內容/值

我的模型:

public class CheckBoxModel 
{ 
    public string Name { get; set; } 
    public bool Checked { get; set; } 
} 


public partial class ContactUsModel : BaseNopModel 
{ 
    [AllowHtml] 
    [DisplayName("Case Type")] 
    public List<CheckBoxModel> CaseType { get; set; } 
} 

我的控制器,進行快速檢查,看看是否形式正確顯示:

var model = new ContactUsModel 
{ 
    CaseType = new List<CheckBoxModel>() 
    { 
     new CheckBoxModel() { Name="Civil Tax", Checked=false }, 
     new CheckBoxModel() { Name="Criminal Tax", Checked=false }, 
     new CheckBoxModel() { Name="Other Tax", Checked=false } 
    } 
} 

我的剃刀:

<div class="inputs"> 
    @Html.LabelFor(model => model.CaseType) 
    @for(int i = 0; i < Model.CaseType.Count; i++) 
    { 
     @Html.LabelFor(lbl => lbl.CaseType[i].Name) 
     @Html.CheckBoxFor(chk => chk.CaseType[i].Checked) 
    } 
</div> 

HTML:

Case Type: Name []  Name[]  Name[] 

我錯過了什麼讓控制器中分配的實際名稱顯示?

回答

1

試試這個:

<div class="inputs"> 
    @Html.LabelFor(model => model.CaseType) 
    @for(int i = 0; i < Model.CaseType.Count; i++) 
    { 
     @Html.DisplayFor(lbl => lbl.CaseType[i].Name) 
     @Html.CheckBoxFor(chk => chk.CaseType[i].Checked) 
    } 
</div> 

LabelFor將打印的財產,這是不是你要找的內容的名稱。 DisplayFor將打印該值。

+0

AHHHHHH ....那麼簡單但我無法看到它。謝謝。 – GPGVM

+0

很高興幫助。如果這對您有用,請將答案標記爲已接受。 – DavidS

+0

你真的想要的是'@ Html.LabelFor(M => m.CaseType [I] .Checked,型號[I]請將.Name)',以便創建具有複選框相關聯的標籤(並顯示相關聯的值'名稱'屬性)。你應該將其替換'@ Html.LabelFor(M => m.CaseType)''@ Html.DisplayNameFor(M => m.CaseType)'因爲你沒有一個叫'CaseType'所以''