更新剃须刀页面中的相关数据

时间:2018-11-16 09:58:24

标签: razor-pages

在Visual Studio文档的“使用ASP.NET Core中的数据”的第"Updating related data - EF Core Razor Pages (7 of 8)"节中,我在尝试理解Html.Row()方法在此代码中的工作方式时遇到了一些麻烦:

<div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <table>
                        <tr>
                            @{
                                int cnt = 0;

                                foreach (var course in Model.AssignedCourseDataList)
                                {
                                    if (cnt++ % 3 == 0)
                                    {
                                        @:</tr><tr>
                                    }
                                    @:<td>
                                        <input type="checkbox"
                                               name="selectedCourses"
                                               value="@course.CourseID"
                                               @(Html.Raw(course.Assigned ? "checked=\"checked\"" : "")) />
                                               @course.CourseID @:  @course.Title
                                    @:</td>
                                }
                                @:</tr>
                            }
                    </table>
                </div>
            </div>

Html.Row()方法到底如何工作? 在多对多关系中更新关联实体是否有其他选择?

1 个答案:

答案 0 :(得分:0)

默认情况下,在Razor页面(或“视图”)中呈现的所有字符串均为encoded as HTML-也就是说,所有HTML字符都将转换为它们的HTML实体。这是一项安全措施,可帮助新手开发人员将潜在的XSS攻击引入其网站。

Html.Raw方法不对字符串进行编码。它旨在用于在Razor页面中呈现HTML。我不理解您复制的代码片段中使用了它。这是毫无意义。以下将实现相同的结果:

<input type="checkbox" name="selectedCourses" value="@course.CourseID" checked="@course.Assigned" />

如果course.Assigned的值为true,则呈现checked属性。否则不是。