2016-10-08 1 views
-1

Je suis encore nouveau sur mvc5 et avais très peu de connaissances avec javascript. Je sais que mes cascades fonctionnent mais j'ai des problèmes avec la partie affichage. Ce que je veux faire est d'avoir 2 liste déroulante. 1 contenant tous les noms de clients et le 2ème aura une liste de leurs transactions en attente. Fondamentalement, la première liste déroulante aura des noms de clients tandis que la seconde aura des titres vidéo. S'il vous plaît vérifier mon code où j'ai mal fait. Pourquoi je ne peux pas afficher les titres vidéo. BTW J'ai essayé d'autres propriétés dans mes transactions et je peux les afficher. C'est comme ça que je sais que ma cascade n'est pas le problème.Comment afficher la valeur d'une clé étrangère d'un modèle dans une liste déroulante en cascade en mvc5?

modèles

//Transaction Model 
TransactionID { get; set; } 
public int CustomerID { get; set; } 
public virtual Customers CustomerName { get; set; } 
public int VideoID { get; set; } 
public virtual Videos Videos { get; set; } 
public int Quantity { get; set; } 
[ReadOnly(true)] 
public DateTime? TransactionDate { get; set; } 
[ReadOnly(true)] 
public DateTime? DueDate { get; set; } 
[ReadOnly(true)] 
public Decimal Cost { get; set; } 
[ReadOnly(true)] 
public String ReturnStatus { get; set;} 

//Customers Model 
public int CustomerID { get; set; } 
public string CustomerName { get; set; } 
public string CustomerAddress { get; set; } 
public string CustomerContact { get; set; } 

//Video Model 
public int VideoID { get; set; } 
public string VideoTitle { get; set; } 
public int CategoryID { get; set; } 
public virtual Category VideoCategory { get; set; } 
[Range(0,99)] 
public int VideoIn { get; set; } 
[Range(0,99)] 
public int VideoOut { get; set; } 

Conroller

public ActionResult CustomerList() 
{ 
    var customers = db.Customers.OrderBy(x => x.CustomerID).ToList(); 
    if (HttpContext.Request.IsAjaxRequest()) 
    { 
     return Json(new SelectList(
        customers, 
        "CustomerID", 
        "CustomerName"), JsonRequestBehavior.AllowGet 
        ); 
    } 
    return View(customers); 
} 

public ActionResult Transact(int cusId) 
{ 
    var transact = db.Transactions 
        .Where(x => x.CustomerID == cusId) 
        .Where(s => s.ReturnStatus == "FALSE").ToList(); 
    if (HttpContext.Request.IsAjaxRequest()) 
     return Json(new SelectList(
         transact, 
         "TransactionID", 
         "VideoTitle"), JsonRequestBehavior.AllowGet 
        ); 
    return View(transact); 
} 
+0

obtenez-vous la valeur transact variable? –

+0

Votre modèle 'Transaction' ne contient même pas de propriété nommée' VideoTitle'. Et vous n'avez même pas montré le code de la vue. Et retourner un objet anonyme dans le 'JsonResult', pas un' SelectList' (il ne sert à rien de passer les valeurs supplémentaires de 'SelectListItem' au client.) –

+0

@ LateshtClick.com oui frère Merci pour la réponse – realNewbie

Répondre

0

je trouver une solution après les heures d'essai d'une erreur. Ce que j'ai fait, c'est que j'ai ajouté une jointure dans ma requête.

var transact = db.Transactions 
         .Where(x => x.CustomerID == cusId) 
         .Where(s => s.ReturnStatus == "FALSE") 
         .Join(db.Videos, 
         v => v.VideoID, 
         t => t.VideoID, 
         (transaction, videos) => new { 
         TransactionID = transaction.TransactionID, 
         VideoTitle = videos.VideoTitle }).ToList();