【发布时间】:2018-02-06 16:23:28
【问题描述】:
我用过c# 7.2(c#最新次要版本(latest))
我想发送两个模型,其中包含 Tuple 和已命名的项目。 在控制器中,我使用名称创建元组:
public ActionResult Create(Guid fitnessPlanId)
{
#region GetCurrentFitnessPlan
var currentFitnessPlan= _service.FitnessPlanRepository.Get(fitnessPlanId, null, null);
if (currentFitnessPlan == null) return HttpNotFound();
#endregion
_currentUser = _service.UserRepository.GetUserByUsername(User.Identity.Name);
(FitnessPlan fitnessPlan , FitnessPlanDay fitnessPlanDay) tupleModel =(currentFitnessPlan, null);
return View(tupleModel);
}
鉴于我是这样写的:
@model (FitnessPlan fitnessPlan, FitnessPlanDay fitnessPlanDay)
当像这样在视图中使用元组时:
<th>@Html.DisplayNameFor(model => model.fitnessPlan.User.Sex)</th>
DisplayNameFor告诉我一个错误:
类型参数不能从用法中推断出来。尝试指定 明确的类型参数。
我在互联网上进行了研究,但没有找到任何结果。 如何通过命名视图中的项目来使用 Tuple?
---固定---
关于答案Georg Patscheider和这篇文章:Can a C# named Tuple be used as an MVC page model type?
解决此问题的唯一方法是更改动作控制器中的var tupleModel = new Tuple<FitnessPlan, FitnessPlanDay>(currentFitnessPlan, null); 和
模型到@model Tuple<FitnessPlan, FitnessPlanDay>上查看并使用<th>@Html.DisplayNameFor(model => model.Item1.User.Sex)</th>
【问题讨论】:
标签: c# asp.net asp.net-mvc