MVC 剃刀用于每次抛出编译错误

本文关键字:编译 错误 剃刀 用于 MVC | 更新日期: 2023-09-27 18:37:28

我正在尝试在 razor 中循环访问我的模型中的一些代码。

标签组

是标签组(简单)和标签组之外的标签列表。然后,我有一个受访者,他从这个标签组中选择一个标签,他的选择存储在他的受访者数据中。

                @foreach (var tagGroup in @Model.TagGroups)
                { 
                    <optgroup label="@tagGroup.Name">
                        @foreach (var tag in tagGroup.Tags)
                        {
                            var selectedTag = @Model.Respondent.Tags.Where(r => r.Id == (int)tag.Id);
                            if (selectedTag != null)
                            { 
                                <option selected="selected">@tag.Name</option>
                            }
                            else 
                            {
                                <option>@tag.Name</option>
                            }
                        }
                    </optgroup>
                }

问题是这会引发编译错误?我什至尝试在 if selectedTag 之前添加"@",然后说代码块中不需要 @。

我希望输出如下所示:

<optgroup label="NFC NORTH">
                        <option selected="selected">Chicago Bears</option>
                        <option>Detroit Lions</option>
                        <option>Green Bay Packers</option>
                        <option>Minnesota Vikings</option>
                    </optgroup>

MVC 剃刀用于每次抛出编译错误

无需在 C# 代码部分中添加 @:

@foreach (var tagGroup in @Model.TagGroups)

应该是

@foreach (var tagGroup in Model.TagGroups)

var selectedTag = @Model.Respondent.Tags.Where(r => r.Id == (int)tag.Id);

应该是

var selectedTag = Model.Respondent.Tags.Where(r => r.Id == (int)tag.Id);