如何让元组在mvc 5,VS2017中工作

时间:2017-05-03 17:12:50

标签: asp.net-mvc-4 asp.net-mvc-5 visual-studio-2017

我的项目已经在C#7.0上了: enter image description here

我已经安装了Compilers和System.ValueTuple: enter image description here

我的观点模型是:

@model  IEnumerable<GHCOMvc.Models.PriorAddressModel>

<table class="table">
  <tr>
    <th>
      @Html.DisplayNameFor(model => model.Address.Address)
    </th>
  </tr>
</table>

并且一切正常。

当我把它更改为:

@using GHCOMvc.Controllers

@model  (IEnumerable<GHCOMvc.Models.PriorAddressModel> List, BaseController.Modes mode)

<table class="table">
  <tr>
    <th>
      @Html.DisplayNameFor(model => model.Address.Address)
    </th>
  </tr>
</table>

它给出了错误:

  

错误CS8059功能&#39;元组&#39;在C#6中不可用。请使用   语言版本7或更高。

这不是一个核心项目,所以我还没有Startup.cs文件。我可以添加一个来解决问题,但我不清楚如何做到这一点,因为这不是一个核心项目。

2 个答案:

答案 0 :(得分:1)

Microsoft.CodeDom.Providers.DotNetCompilerPlatform更新到1.0.4 1.0.3为我解决了这个问题:

enter image description here

注意我必须手动编辑csproj文件,以便在我执行此操作后删除对1.0.3的引用,以使其构建。

然后,在我看来,我可以这样做:

@model  (IEnumerable<GHCOMvc.Models.PriorAddressModel> list, BaseController.Modes mode)

<table class="table">
  <tr>
    <th>
      @Html.DisplayNameFor(model => model.list.FirstOrDefault().Address.Address)
    </th>
  </tr>
</table>

答案 1 :(得分:0)

我不知道你的具体问题,但是在编译剃刀文件之前我已经遇到了类似问题。检查目标框架。请记住,razor是在部署之后编译的。我敢打赌,如果你修改目标框架,你会看到你的问题得到解决。