我们正在将.NET mvc应用程序从MVC3升级到MVC5,其中包括从Razor 1升级到Razor 3.我们在视图中遇到的一个错误如下:
在MVC3中,我们的许多观点都这样做:
@if (someCondition)
{
@* render some content *@
@string.Format(...)
}
但是,在MVC5中,这会产生以下错误:
System.Web.HttpParseException:“@”后面的意外“string”关键字 字符。一旦进入内部代码,您就不需要像这样的结构前缀 “string”with“@”。
我知道有两个简单的修复:
@if (someCondition)
{
@* render some content *@
@: @string.Format(...)
}
或者
@if (someCondition)
{
@* render some content *@
<text> @string.Format(...) </text>
}
但是,在数百个视图中制作和测试这些更改会很痛苦。因此,我的问题是:解决这一看似突破的变化的最佳方法是什么?
答案 0 :(得分:2)
我认为this question的答案可能会提供一些帮助。虽然我不知道,但可能没有,你可以在设置中打开一个特定的标志,如果你只是用@String替换@string(因此使用类而不是别名),它似乎工作得很好。
@if (condition)
{
@String.Format("test {0}", 2992)
}
希望这就像查找/替换&#34; @ string&#34;的任何实例一样简单。用&#34; @ String&#34;在你的代码中。
答案 1 :(得分:2)
嗨,你可以这样使用,
@if (someCondition)
{
string.Format(...)
}
无需这样做,
@if (someCondition)
{
@* render some content *@
@: @string.Format(...)
}
Or
@if (someCondition)
{
@* render some content *@
<text> @string.Format(...) </text>
}