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

使用Nancy的SSVE时如何在视图中访问Dictionary项?

在Nancy的SSVE视图中读取Dictionary数据的正确方法

嘿,我明白你现在卡在哪了——把Dictionary传给视图后,遍历只能看到键和对象类型的字符串,根本拿不到里面的属性值对吧?这是因为你没搞清楚@Current在遍历Dictionary时到底是什么东西。

先给你拆解清楚:当你把Dictionary<string, object>作为模型传给SSVE视图时,用@Each遍历的话,每一个@Current其实是KeyValuePair<string, object>类型的实例,不是字典本身。所以你直接输出@Current才会得到[model, ...RatPack]这种字符串表示。

下面给你两种解决方案,看你需求来选:

1. 直接访问Dictionary里的特定键值

如果你不需要遍历,只是想直接拿某个键对应的对象属性,不用绕弯子,直接通过@Model["键名"]来访问:

<!-- 直接获取指定键的对象并访问属性 -->
Model的FirstName: @Model["model"].FirstName<br>
Info的FirstName: @Model["info"].FirstName

2. 遍历整个Dictionary的键值对

如果你确实需要遍历所有键值对,那要利用KeyValuePair的Key和Value属性:

<!-- 遍历所有键值对,分别获取键和对象属性 -->
@Each
    <p>键名: @Current.Key</p>
    <p>对应的FirstName: @Current.Value.FirstName</p>
@EndEach

另外给你提个小建议:你的RatPack类里的FirstName是字段,虽然SSVE也能访问字段,但改成属性(加上get; set;)会更符合C#的编码规范,也能避免一些潜在的绑定问题:

public class RatPack {
    public string FirstName { get; set; }
}

之前你试的@Current["info"]和@Current.info都不对,原因是:

  • @Current是键值对实例,不是字典,所以不能用索引器["info"]
  • info是你Dictionary里的键名,不是KeyValuePair的属性,自然找不到这个成员

这样改完之后,你就能正常访问到字典里对象的属性啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:48:38