使用过程生成的变量标识符返回值

本文关键字:变量 标识符 返回值 过程 | 更新日期: 2023-09-27 18:21:20

一个例子:

@foreach (var p in products)
{
    <a href="/@(p.Path)">@translations.@(p.TextId)</a>
}

@translations.@(p.textId)不起作用,但这与我认为的过程生成的变量标识符一致。

我想,返回对应的值,就好像我已经写了:@translations.helloworldproduct@translations.otherproduct一样。

在我的translations数据库中,我会有:helloworldproduct = "Hello, World!"otherproduct = "Yet another product test."

HTML的结果是:

<a href="/products/1">Hello, World!</a>
<a href="/products/2">Yet another product test.</a>

这样的事情有可能吗?

使用过程生成的变量标识符返回值

这不会起作用,因为您本质上是在尝试提取等价的JS eval。好吧,你可以让它发挥作用,但你必须使用反射,它既丑陋又缓慢。

您最好给translations一个索引器,比如通用Dictionary<TKey, TValue>免费提供的索引器。(注意,我不确定translations是什么类型。我假设它要么是匿名类型,要么是具有属性的具体类。)然后可以使用索引器:

@translations[p.TextId]