2017-04-17 19 views
0

我在這裏實現Tuple在我看來使用兩個模型。但我得到以下錯誤:傳入字典的模型項目類型爲'System.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"); 
    } 
} 

任何建議,請?

+1

比較'組<列表,名單>'從您的視圖和你期待的指數方法是什麼:'組>'你看到這兩段代碼之間的區別了嗎? –

+0

ahhh是我改變它,但我有這個錯誤 Erreur du serveur dans l'application'/'。 Erreur de compilation CS1579:foreach語句無法對'WebApplication.Models.log_voyage'類型的變量進行操作,因爲'WebApplication.Models。log_voyage」不包含一個公共定義‘的GetEnumerator’ – Sofia

+0

權,如果你改變它只是'組>',你將無法遍歷元組的第一部分,因爲它不再是'List '。 –

回答

1

麥克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 
+0

這一點,如果(voy.Item1.Dat_Voy == NULL){ ModelState.AddModelError( 「Dat_Voy」, 「不正確的日期。」); } 不再有效 – Sofia

+0

voy.Item1.FirstOrDefault()。Date_Voy == null,希望這能起作用嗎? – Shan

+0

相同,我改爲voy.Item1.Count()== 0,這意味着該列表中沒有任何元素,這意味着Dat_Voy可能爲空。 – Shan

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>> 

要獲取的元組的第一個項目所需的列表中,您將需要建立一個列表從您使用「FirstOrDefault」檢索的項目,或者您需要更改視圖的模型。

0

嘗試使用視圖模型而不是Tuple。然後

您的代碼將是這個樣子:

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) 
{ 
    ... 
} 
+0

是的,我做過這些,但我有這樣的問題 我有一個屬性log_voyage名Heure_Voy我想通過使用VoyageViewModel 如果(voyageViewModel.Heure_Voy == null)做一些事情,但我不能打電話給Heure_Voy這就是問題我不知道再怎麼 – Sofia

相關問題