mar*_*nda 13 razor asp.net-mvc-4
这是一个非常奇怪的错误,我认为它可能是一个剃刀错误.我正在使用VS 2012,MVC4,Framework 4.5.
按照这些说明:http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253806 我创建了一个新的MVC4项目,然后我从MVC3项目中复制了我的所有代码(控制器,视图,视图模型).
Eveything工作得很好,直到我测试了一个有自定义助手的View,里面有一个foreach,一个switch,三个if语句,然后我也调用了其他一些自定义助手.
这两个项目中的代码完全相同,在MVC3中它可以工作,但在MVC4中它显示了这条消息:
Compiler Error Message: CS1513: } expected
Run Code Online (Sandbox Code Playgroud)
所以我尝试添加一个花括号,但它显示相同的错误,所以我不断添加括号,它不会停止告诉我同样的事情.
我用谷歌搜索了这个问题,但我发现这个问题没有答案:http: //www.1771.in/asp-net-mvc-4-issues-migrating-mvc3-view-in-vs-2012-rc.html
有没有人遇到过这个问题?
Dhr*_*har 21
MVC4的Razor解析器与MVC3不同.Razor v3具有高级解析器功能,另一方面严格解析与MVC3相比.
如果您没有以正确的方式使用razor语法,则在将MVC3转换为MVC4时可能会在视图中遇到语法错误.
解决Razor v2中不允许的一些常见剃刀代码错误:
- >除非存在变量声明部分,否则请避免在视图中使用服务器块.
Don’t : @{if(check){body}}
Recommended : @if(check){body}
Run Code Online (Sandbox Code Playgroud)
- >当您已经在服务器范围内时,避免使用@.
Don’t : @if(@variable)
Recommended : @if(variable)
Don't : @{int a = @Model.Property }
Recommended : @{int a = Model.Property }
Run Code Online (Sandbox Code Playgroud)
我有完全相同的问题.
在Razor MVC3中,我正在访问像这样的变量:@vSuggestion但在MVC4中@不是必需的.
我的例子,我在MVC3中有这个代码工作:
@{
var vSuggestion = ((dynamic)ViewData["suggestion"]);
}
<!-- more code here -->
@{ int suggestion = @vSuggestion;
switch (suggestion)
{
case Suggestion.INCORRECT_PASSWORD:
case Suggestion.USER_ALREADY_IN_DATABASE:
<span>Trata de iniciar sesión de nuevo</span><br />
<span>Recupera tu contraseña @Html.ActionLink("aquí", "Recover", "Account")</span>
break;
case Suggestion.EMAIL_DONT_EXISTS:
<span>Comprueba que el correo electrónico está bien escrito</span><br />
<span>Registrate (abajo)</span>
break;
}
}
Run Code Online (Sandbox Code Playgroud)
在MVC4中,Razor没有从switch语句中捕获第一个花括号.所以我从@vSuggestion中删除了@并且razor正确地解析了代码.
希望能帮助到你.
| 归档时间: |
|
| 查看次数: |
7048 次 |
| 最近记录: |