C# 如何在字符串中嵌入razor变量?
我想将razor模型变量添加到资源文件字符串中。我尝试了以下操作,但变量呈现为文本: 尝试1: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); 有什么方法可以做到这一点吗?最好通
"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标记中插入,@(变量)
将起作用。