CheckBoxFor

时间:2016-01-05 18:25:21

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

问题是,由于一些奇怪的原因,当我使用CheckBoxFor时,我得到一个复选框,但ID中有“CS___8__locals1”。不知道它来自何处或为何发生。

有什么想法吗?见下文:

<input class="checkbox" id="ProductPlans_0__CS___8__locals1_plans_4__IsSelected" name="ProductPlans[0].CS$&lt;>8__locals1.plans[4].IsSelected" type="checkbox" value="true" />

我的模型是一个单独的对象(它实际上是对象集合的一部分,但这并不重要。这是我的编辑器模板(省略了@model声明):

<tr> 
  <td>
    <label class="checkbox">
      @Html.CheckBoxFor(x => Model.IsSelected, new { @class = "checkbox" })
      <strong>@Model.MarketingLabel</strong>     
      @Html.Raw(@Model.DisplayName)
    </label>
  </td>
  <td>
    <span data-planid="@Model.Id">@Model.Premium.ToString("C")</span>
  </td>
  <td>
    <a href="@Model.SBCUrl">Explain</a>
  </td>
  @Html.HiddenFor(x => Model.Id)
</tr>

1 个答案:

答案 0 :(得分:6)

我知道这是老帖子,但可能会帮助其他人。 所以,在我的情况下,我有同样的问题,经过一些尝试和错误后问题得到解决,我们发现错误本身就是for循环。

我们的模型是这样的:

for (int i = 0; i < PatiosCobro.Count; i++)
{
    <div class="col-md-4 col-sm-4 col-xs-12">
        <div class="input-group input-group">
            <div class="form-line">
                @Html.TextBoxFor(model => PatiosCobro[i].Valor, new { htmlAttributes = new { @class = "form-control" } })
            </div>
            @Html.HiddenFor(model => PatiosCobro[i].CobroId)
            @Html.NameFor(model => PatiosCobro[i].Valor) 
        </div>
    </div>
}

这将抛出“CS ___ 8__locals1_ETC”

对我们有用的是取出局部变量i并在其他地方宣布它。

通过示例:

int i = 0;
for (i = 0; i < PatiosCobro.Count; i++)
{
    <div class="col-md-4 col-sm-4 col-xs-12">
        <div class="input-group input-group">
            <div class="form-line">
                @Html.TextBoxFor(model => PatiosCobro[i].Valor, new { htmlAttributes = new { @class = "form-control" } })
            </div>
            @Html.HiddenFor(model => PatiosCobro[i].CobroId)
            @Html.NameFor(model => PatiosCobro[i].Valor) 
        </div>
    </div>
}