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

时间:2014-09-09 06:47:59

标签: c# .net razor nancy

一个例子:

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

这样的事情可能吗?

1 个答案:

答案 0 :(得分:1)

这不会起作用,因为你实际上是在试图提取相当于JS eval的东西。好吧,你可以让它工作,但你必须使用反射,它既丑陋又慢。

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

@translations[p.TextId]