You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Razor遍历ICollection展示作者姓名的语法疑问

正确的Razor foreach循环展示作者列表实现方式

没问题,我来帮你搞定这个Razor的循环写法,先从基础结构和代码示例说起:

首先先确认你的类结构(我假设你的类定义大概是这样,如果实际属性名有差异,对应调整即可):

// 作者实体类
public class Author
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

// 包含多个作者的类
public class MyClass
{
    // 存储作者列表的属性,推荐用List<T>或ICollection<T>类型
    public List<Author> Authors { get; set; } = new List<Author>();
}

接下来在你的Razor视图(.cshtml)文件里,假设页面的Model是MyClass类型(即你已经把MyClass的实例传递给了视图),正确的foreach循环写法如下:

基础实现(带空值检查)

@model MyClass

<h3>作者列表</h3>
<!-- 先做空值判断,避免空引用异常 -->
@if (Model.Authors != null && Model.Authors.Any())
{
    <ul class="author-list">
        <!-- Razor中C#循环必须加@开头 -->
        @foreach (var author in Model.Authors)
        {
            <li>@author.FirstName @author.LastName</li>
        }
    </ul>
}
else
{
    <p>暂无作者信息</p>
}

你可能踩过的常见坑

  • 忘记加@符号:Razor里识别C#代码必须用@开头,不管是@foreach循环还是变量引用@author.FirstName,漏写就会变成纯文本输出
  • 没做空值检查:直接循环Model.Authors如果它是null的话,会触发空引用异常,一定要先判断
  • 代码块包裹问题:循环内部的HTML元素必须用大括号{}包裹,否则Razor会识别语法错误

如果是Blazor组件中的写法

如果你是在Blazor组件里使用,写法类似,只是模型的获取方式可能不同(比如依赖注入或参数传递):

<!-- 假设通过注入获取MyClass实例 -->
@inject MyClass MyClassInstance

<h3>作者列表</h3>
@if (MyClassInstance.Authors != null && MyClassInstance.Authors.Any())
{
    <div>
        @foreach (var author in MyClassInstance.Authors)
        {
            <p>@author.FirstName @author.LastName</p>
        }
    </div>
}
else
{
    <p>暂无作者信息</p>
}

按照这个写法,就能正确遍历并输出每个作者的FirstName和LastName啦~

内容的提问来源于stack exchange,提问作者ed Mundo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:40:07