asp.net-mvc-3 - MVC4 Razor 中可能存在重大变化,可通过 "@:@"修复

标签 asp.net-mvc-3 razor asp.net-mvc-4 razor-2

我最近将我的网站从 ASP.NET MVC3 (Razor) 升级到 MVC4 (Razor2),这样做时发现 Razor View 引擎似乎发生了重大变化。

场景(大大简化)如下所示。

@model IEnumerable<string>

@{ Layout = null; }

<!DOCTYPE html>

<html>
    <body>
        <div>
              @foreach (var x in Model)
              {
                  @string.Format("Foo bar: {0}", x) // Errors in MVC4/Razor2
              }
        </div>
    </body>
</html>

这在 MVC3/Razor 中工作正常,但是在 MVC4/Razor2 中 string.Format该行导致错误:

Unexpected "string" keyword after "@" character. Once inside code, you do not need to prefix constructs like "string" with "@".

如果删除 @ ,然后 View 引擎要求您终止 string.Format带分号的行。然而,ReSharper 随后发出警告(这是正确的):

Return value of pure method is not used.

我为此找到的两个修复是使用 <text> :

<text>@string.Format("The value {0}", x)</text>

或者使用 @:@ 的更奇怪的方法:

@:@string.Format("The value {0}", x)

这是 Razor View 引擎中已知且有记录的更改吗?

最佳答案

看起来像是一个错误。它适用于String:

@foreach (var x in Model)
{
    @String.Format("Foo bar: {0}", x)
}

关于asp.net-mvc-3 - MVC4 Razor 中可能存在重大变化,可通过 "@:@"修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15543841/

相关文章:

asp.net-mvc-3 - 解析器错误 : Server Error in '/' Application

asp.net-mvc - Razor - 如何从 this.Page(动态 WebPageBase.Page)转换为 System.Web.UI.Page

c# - Controller 操作中的异步等待 : Error: Can not await 'void'

javascript - 通过ajax方法调用函数时未下载Excel文件

asp.net - 如何在 Asp.net MVC 4 应用程序中使用 SimpleMemberShip Provider

javascript - 如何将数组从 JavaScript 传递到我的操作方法

wpf - 在 MVC 中重用 WPF ViewModel 是否可行?

c# - ASP.NET MVC3 调试 Application_Start

c# - Razor 如果条件不同

c# - 没有类型为 'IEnumerable<SelectListItem>' 的 ViewData 项具有键specialityId'。'。