【问题标题】:MVC Razor CheckBoxFor() not displaying property contents / valueMVC Razor CheckBoxFor() 不显示属性内容/值
【发布时间】:2016-05-13 00:21:04
【问题描述】:

很简单……至少我是这么想的。这是 NopCommerce 中的一个插件页面,但我不认为这在这里起作用。

我的模特:

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[]

要显示控制器中分配的实际名称,我缺少什么?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 razor


    【解决方案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 将打印该值。

    【讨论】:

    • 您真正想要的是@Html.LabelFor(m =&gt; m.CaseType[i].Checked, Model[i].Name),以便创建与复选框关联的标签(并显示关联的Name 属性的值)。你应该用@Html.DisplayNameFor(m =&gt; m.CaseType)替换@Html.LabelFor(m =&gt; m.CaseType),因为你没有一个名为CaseType的控件,所以&lt;label&gt;没有意义。
    猜你喜欢
    • 2014-01-20
    • 2021-05-26
    • 1970-01-01
    • 2013-06-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多