这里实现了Tuple在我的视图中使用两个模型。但是我收到了以下错误:
传递到字典中的模型项是类型的
System.Tuple'2[WebApplication.Models.log_voyage,System.Collections.Generic.List'1[WebApplication.Models.log_ligne_voyage]]»
,但此词典需要«System.Tuple'2[System.Collections.Generic.List'1[WebApplication.Models.log_voyage],System.Collections.Generic.List'1[WebApplication.Models.log_ligne_voyage]]»
类型的模型项。
这是我的观点:
@using WebApplication.Models;
@model Tuple<List<log_voyage>, List<log_ligne_voyage>>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout1.cshtml";
}
控制器:
public ActionResult Index( int id = 0 )
{
var first = entities.log_voyage.Where(v => v.Num_Voy == lastVoyageID).FirstOrDefault();
log_voyage voyage1 = entities.log_voyage.Find(lastVoyageID);
var second = entities.log_ligne_voyage.Where(x => x.NUM_Voy == lastVoyageID).ToList();
var t = new Tuple<log_voyage, List<log_ligne_voyage>>(first, second);
return View(t);
}
[HttpPost]
public ActionResult Index(Tuple<log_voyage, List<log_ligne_voyage>> voy)
{
try
{
if (voy.Item1.Dat_Voy == null)
{
ModelState.AddModelError("Dat_Voy", "Incorrect Date.");
}
//.............Some Code .........//
entities.Entry(voy.Item1).State = EntityState.Modified;
entities.SaveChanges();
return RedirectToAction("Index", "Miss_Voyage");
}
else
{
GetListcontoller();
return View(voy);
}
}
catch (DataException /* dex */)
{
ModelState.AddModelError("", "Impossible d'executer cette action. contacter le service info SVP.");
GetListcontoller();
return View("Index", "Home");
}
}
有什么建议吗?
答案 0 :(得分:1)
Mike McCaughan指出。
您从控制器返回的模型是
Tuple<log_voyage, List<log_ligne_voyage>> voy
但观点期待
@model Tuple<List<log_voyage>, List<log_ligne_voyage>>
正如您所说,如果将视图更改为
,则会出现错误Tuple<log_voyage, List<log_ligne_voyage>>
尝试将控制器更改为
Tuple<List<log_voyage>, List<log_ligne_voyage>>
如下面的代码:
[HttpPost]
public ActionResult Index(Tuple<List<log_voyage>, List<log_ligne_voyage>> voy)
{
try
{
if (voy.Item1.Count() == 0)
{
// followed by your code
答案 1 :(得分:0)
var first = entities.log_voyage.Where(v => v.Num_Voy == lastVoyageID).FirstOrDefault();
将返回
的单个实例 WebApplication.Models.log_voyage
您的观点需要
Tuple<List<log_voyage>, List<log_ligne_voyage>>
要获取元组中第一项所需的列表,您需要使用&#34; FirstOrDefault&#34;来检索您检索的项目中的列表。或者您需要更改视图的模型。
答案 2 :(得分:0)
尝试使用视图模型而不是元组。
您的代码看起来像这样:
public class VoyageViewModel
{
public log_voyage log { get; set; }
public List<log_ligne_voyage> log_ligne_voyage_list { get; set; }
}
public ActionResult Index(VoyageViewModel voyageViewModel)
{
...
}