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

时间:2015-10-16 22:49:03

标签: c# asp.net-mvc razor razorengine

我想将一个剃刀模型变量添加到资源文件字符串中。我尝试了以下内容,但变量呈现为文字:

尝试1:

"There is a variable @Model.here"

尝试2:

"There is a variable @(Model.here)"

在代码中,它被引用如下:

@MyManager.GetString("resourcefilevariable")

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:4)

最好通过存储

来做这种事情
"There is a variable {0}"

作为资源字符串,并在视图中写下这样的内容:

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

在剃须刀视图中,将其渲染为

@Html.Raw(string.Format(Resources.resourceName, Model.Name))

答案 1 :(得分:1)

正如Leigh Shepperson所指出的,您可以使用带占位符的字符串和string.Format来替换占位符和实际值。如果字符串包含任何HTML标记,则应使用Html.Raw方法进行渲染。

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