我正在使用Visual Studio 2017和一个针对.Net Core 2.0框架的MVC项目。在一个视图中,我得到插值字符串错误以及一个用于异步函数。
当我第一次收到它时,我更改了属性 - >构建 - >高级语言版本从4.0到7.1编译没有运气。我还发现了一些其他解决方案,说安装nuget包Microsoft.Net.Compilers和另一个Microsoft.CodeDom.Providers.DotNetCompilerPlatform。安装两个软件包后,我的视图中仍然存在错误。
我对我的控制器中的语法进行了快速测试,看起来很好并且不会引发错误。我想当你安装新版本的VS时,你会得到最新版本的C#?我需要安装C#编译器吗?
这是导致问题的代码:
<p class="text-center">
@if (item is Jamboree)
{
((Jamboree)item).EventDate.Date.ToString();
}
else
{
$"{((Shootout)item).EventBegDate.Date} thru {((Shootout)item).EventEndDate.Date.ToString()}";
}
</p>
答案 0 :(得分:2)
解决您遇到的两个问题:
1)在视图中使用async / await
在视图中使用async / await是不可能的。您应该尝试在控制器中执行此操作。见Use of await in Razor views
2)使用插值字符串
我认为这只是因为您的问题中存在语法错误。您需要使用@()
包围字符串才能打印它们。如果它是一个可能不安全的值(例如来自您的数据库/用户的数据),则应该用Html.Encode()
包围它。
<p class="text-center">
@if (item is Jamboree)
{
@(((Jamboree)item).EventDate.Date.ToString())
}
else
{
@($"{((Shootout)item).EventBegDate.Date} thru {((Shootout)item).EventEndDate.Date.ToString()}")
}
</p>
答案 1 :(得分:0)
由于我在这个视图中收到了很多错误....我甚至没有尝试在视图中做错误,我最终创建了另一个项目并将所有内容复制到新项目中。现在一切都像魅力一样。我觉得有些事情与项目有关......不知道是什么。