C# 如何在字符串中嵌入razor变量?

C# 如何在字符串中嵌入razor变量?,c#,asp.net-mvc,razor,razorengine,C#,Asp.net Mvc,Razor,Razorengine,我想将razor模型变量添加到资源文件字符串中。我尝试了以下操作,但变量呈现为文本: 尝试1: "There is a variable @Model.here" 尝试2: "There is a variable @(Model.here)" 在代码中,它的引用方式如下: @MyManager.GetString("resourcefilevariable") @string.Format(Resources.String, model.here); 有什么方法可以做到这一点吗?最好通

我想将razor模型变量添加到资源文件字符串中。我尝试了以下操作,但变量呈现为文本:

尝试1:

"There is a variable @Model.here"
尝试2:

"There is a variable @(Model.here)"
在代码中,它的引用方式如下:

@MyManager.GetString("resourcefilevariable")
@string.Format(Resources.String, model.here);

有什么方法可以做到这一点吗?

最好通过存储

"There is a variable {0}"
作为资源字符串,在视图中,编写如下内容:

@MyManager.GetString("resourcefilevariable")
@string.Format(Resources.String, model.here);
作为一个完整的例子:

以下是模型类:

public class Foo
{
    public string Name { get; set; }

    public Foo()
    {
        Name = "bar";
    }
}
它有一个带有简单索引ActionResult的控制器:

    // GET: Foo
    public ActionResult Index()
    {
        return View(new Foo());
    }
有一个包含资源的resx文件

[resourceName, <strong>name of model is: {0}</strong>]

正如Leigh Shepperson指出的,您可以使用带有占位符的字符串和
string.Format
将占位符替换为实际值。如果字符串包含任何HTML标记,则应使用
HTML.Raw
方法呈现该字符串

@Html.Raw(string.Format(Resources.String, model.here))

我认为这不会起作用,因为资源文件变量没有被引用。我已经用那个细节更新了OP。所以写
@string.Format(MyManager.GetString(“resourcefilevariable”)、model.here)不会做这项工作吗?那确实有效。我在这个资源文件字符串(标记)中有一些HTML。这是一个字面意义上的解释。有没有办法让它渲染?我的第一个想法是,这不是一个好主意。您要说的是,这个资源字符串仅与razor紧密绑定,不能在其他任何地方使用。此外,它现在紧密地绑定到一个运行时变量,这意味着它只能在运行时进行调试,这可能非常危险。放置代码的位置有很大的不同。如果您位于Razor block(介于
@{
}
之间)然后另一个
@
就是一个语法错误,因为您已经在Razor中了。然后需要使用string.Format来格式化字符串。另一方面,如果在HTML标记中插入,
@(变量)
将起作用。