обновить связанные данные на страницах бритвы - PullRequest
0 голосов
/ 16 ноября 2018

В документации Visual Studio, в разделе «Работа с данными в ASP.NET Core», раздел «Обновление связанных данных - EF Core Razor Pages (7 из 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 голосов
/ 16 ноября 2018

По умолчанию все строки, отображаемые на странице (или представлении) Razor, кодируются как HTML , то есть все символы HTML преобразуются в их сущность HTML.Это мера безопасности, помогающая начинающему разработчику создавать потенциальные XSS-атаки на свой сайт.

Метод Html.Raw не кодирует строку.Он предназначен для использования для рендеринга HTML на странице Razor.Я не понимаю, как это используется во фрагменте, который вы воспроизвели.Это бессмысленно.Следующие действия позволят добиться того же:

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

Если значение course.Assigned равно true, отображается атрибут checked.В противном случае это не так.

...