MVC剃刀foreach抛出编译错误

时间:2013-10-30 20:38:22

标签: c# asp.net-mvc razor

我正试图在我的剃刀模型中循环一些代码。

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

                @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>

1 个答案:

答案 0 :(得分:6)

您无需在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);