gpt4 book ai didi

c# - 带有方法调用的 MVC4.0 辅助输出的 Razor

转载 作者:行者123 更新时间:2023-11-30 12:30:22 24 4
gpt4 key购买 nike

@helper GetString()
{
@string.Format("string_{0}","foo");
}

以上代码无法在带有 Razor 2.0 的 ASP.NET MVC 4.0 中编译。但是如果我在 string.Format 之前删除'@',那么代码会编译,但字符串不会输出到生成的 HTML 中。这是为什么?在带有 Razor 1.x 的 MVC 3.0 中,上面的代码按预期工作。我通过引入一个变量用下面的代码解决了这个问题

@helper GetString()
{
var url = string.Format("string_{0}","foo");
@url
}

这是为什么?

最佳答案

@helper GetString()
{
@string.Format("string_{0}","foo");
}

Above code will not compile in ASP.NET MVC 4.0 with Razor 2.0.

那是因为 Razor 引擎会看到您有一个构造(例如,您的示例中的字符串)并且您正在冗余地使用 @。这不会像您所经历的那样编译。

But if I remove '@' before string.Format, then the code compiles, but the string will not be outputed to the generated HTML.

不会有任何输出,因为你没有告诉 Razor 引擎要写什么。你只是做了一些代码。它类似于在 c# 中执行 string.Format 而不是将其分配给变量。

I walkaround this with below code by introducing a variable

关于我之前提到的内容,在您引入变量并编写它的那一刻,您现在就是在告诉 Razor 引擎输出一些东西。这类似于 c# 控制台应用程序,其中:

  • 你做了一个string.Format:string.Format("string_{0}","foo");
  • 将其输出分配给一个变量:var url = string.Format("string_{0}","foo");
  • 打印变量:@url

您可以 read this blog post更好地了解 Razor 引擎如何使用 @

现在,除了您正在做的事情,您还可以这样做:

@helper GetString()
{
<text>@string.Format("string_{0}", "foo")</text>
}

关于c# - 带有方法调用的 MVC4.0 辅助输出的 Razor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16160447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com