2017-05-20 2 views
0

Je dois créer une valeur DropDownList remplie à partir de la base de données via WCF REST. comme ce loin le json a obtenu les données, mais quand je l'utilise et le mettre sur DropDownList HTML Helper, le SelectList toujours montré uniquement le nom du modèle.Affichage DropDownList uniquement Nom des modèles

Screenshot Result Name of model

mais quand je mets le modèle sur @HTML.DisplayFor, les données indiquées comme this

Voir

@Html.DisplayFor(model => model.GetClassID, "Select") 
@Html.DropDownListFor(model => model.GetSchedule.ClassIDS, new SelectList(Model.GetClassID, "ClassID"), new { @class = "select2" }) 

je suis habitué Sélectionnez 2 mais assez sûr ce n'est pas erreur de classe, coz rien n'a changé lorsque je supprime la classe

Extrayez JSON de WCF

public List<ClassIDOnly> GetSingleClassID() 
{ 
    var json = new WebClient().DownloadString(SU.URLService + "ViewSingleClassID"); 
    JObject rss = JObject.Parse(json); 
    JArray items = (JArray)rss["GetSingleClassIDResult"]; 
    var myReturn = new List<ClassIDOnly>(); 
    for (int i = 0; i < items.Count; i++) 
    { 
     myReturn.Add(new ClassIDOnly 
     { 
      ClassID = Convert.ToInt32(rss["GetSingleClassIDResult"][i]["ClassID"]), 
     }); 
     Console.WriteLine(myReturn); 
    } 
    return myReturn; 
} 

cela fonctionne correctement.

Modèle

public class MixSchedule 
{ 
    public Schedule GetSchedule { get; set; } 
    public List<ClassIDOnly> GetClassID { get; set; } 
} 

Contrôleur

ClassModel cm = new ClassModel(); 
var viewm = new MixSchedule 
{ 
    GetClassID = cm.GetSingleClassID() 
}; 
return View (viewm); 

i était d'essayer beaucoup de manière, y compris l'utilisation ViewBag mais le résultat sont les mêmes. Y at-il quelque chose qui ne va pas avec mon code? Merci d'avance.

Répondre

0

Je pense que vous avez besoin de revoir quelques petites choses:

  1. Dans votre modèle, GetClassID ne devrait pas refléter une liste d'éléments, mais l'élément sélectionné par l'utilisateur: je pourrais ressembler à ceci:

    public class MixSchedule { public string ClassID { get; set; } }

  2. Si vous ne dites pas SelectList qui est le DataTextField qu'il appellera la méthode ToString. C'est pourquoi vous n'obtenez pas le bon texte. Donc, il devrait ressembler à ceci:

    @Html.DropDownListFor(model => model.ClassID, new SelectList(Model.GetClassID(), "ClassID", "ClassID"), new { @class = "select2" })

+0

Hmm je vois. Merci laissez-moi le revoir plus tard – blacoffees

+0

je l'ai essayé mais le résultat s'avère être comme ceci https://ibb.co/nsiYdF – blacoffees

+0

@Diesire pourriez-vous mettre à jour le code ci-dessus? – hardkoded