2016-05-12 23 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'所以''