【问题标题】:@Html.CheckBoxFor with string in for-loop@Html.CheckBoxFor 与 for 循环中的字符串
【发布时间】:2019-08-31 05:20:14
【问题描述】:

我正在 MVC 中构建一个动态表单。所有(大约 50 个)问题和提供的答案都存储在数据库中。 我使用for循环来动态填充带有问题的视图,这对@HtmlEditorFor 很好,但不适用于我需要使用复选框的地方。由于表单是动态的,因此 answer-property 始终是一个字符串。我想在数据库中存储一个 0 或 1 作为复选框问题的答案。 对于@HtmlCheckBoxFor,我收到一条错误消息:

“模板只能用于字段访问、属性访问、单维数组索引或单参数自定义索引器表达式。”

模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式。

@for (int i = startValue; i < maxValue; i++) {

<tr>
<td>@Html.DisplayFor(r => r.Questions[i].QuestionText)</td>

<td>@Html.CheckBoxFor(r => r.Questions[i].Answer == "1")</td>

</tr>
startValue++;
}

【问题讨论】:

    标签: c# asp.net-mvc razor


    【解决方案1】:

    要解决此问题,请尝试减少 QuestionText 的长度 :

    @for (int i = startValue; i < maxValue; i++) {
    
    <tr>
    <td>@Html.DisplayFor(r => r.Questions[i].QuestionText.Substring(0,100) )</td>
    
    <td>@Html.CheckBoxFor(r => r.Questions[i].Answer == "1")</td>
    
    </tr>
    startValue++;
    }
    

    或者你可以用这个解决方案解决你的问题:

       @for (int i = startValue; i < maxValue; i++) {
    
        <tr>
        <td> @Questions[i].QuestionText </td>
    
        <td>@Html.CheckBoxFor(r => r.Questions[i].Answer == "1")</td>
    
        </tr>
        startValue++;
        }
    

    我希望这个解决方案可以帮助你

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 2021-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      相关资源
      最近更新 更多