2012-05-23 2 views
3

J'essaie d'utiliser l'assistant DropDownList pour créer une liste de sélection avec une valeur sélectionnée dans une application ASP.NET MVC 4, mais lorsque la liste déroulante est générée, elle ne fonctionne pas. t avoir n'importe quelle valeur sélectionnée, même si la SelectList donnée en tant que source a l'ensemble SelectedValue.ASP.NET MVC 4 DropDownList SelectedValue ne fonctionne pas

Voici le code:

Mon modèle:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.ComponentModel.DataAnnotations; 

namespace MvcApplication3.Models 
{ 
    public class Conta 
    { 
     public long ContaId { get; set; } 

     public string Nome { get; set; } 

     public DateTime DataInicial { get; set; } 

     public decimal SaldoInicial { get; set; } 

     public string Owner; 

     public override bool Equals(object obj) 
     { 
      if (obj == null) 
       return false; 

      if (obj.GetType() != typeof(Conta)) 
       return false; 

      Conta conta = (Conta)obj; 

      if ((this.ContaId == conta.ContaId) && (this.Owner.Equals(conta.Owner)) && (this.Nome.Equals(conta.Nome))) 
       return true; 

      return false; 
     } 

     public override int GetHashCode() 
     { 
      int hash = 13; 

      hash = (hash * 7) + ContaId.GetHashCode(); 

      return hash; 
     } 
    } 
} 

Mon contrôleur:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using MvcApplication3.Models; 

namespace MvcApplication3.Controllers 
{ 
    public class HomeController : Controller 
    { 
     public ActionResult View1() 
     { 
      Conta selecionada = new Conta() 
      { 
       ContaId = 3, 
       Nome = "Ourocard VISA", 
       Owner = "teste" 
      }; 

      SelectList selectList = new SelectList(Contas(), "ContaId", "Nome", selecionada); 

      ViewBag.ListaContas = selectList; 

      return View(); 
     } 

     IEnumerable<Conta> Contas() 
     { 
      yield return new Conta() 
      { 
       ContaId = 1, 
       Nome = "Banco do Brasil", 
       Owner = "teste" 
      }; 

      yield return new Conta() 
      { 
       ContaId = 2, 
       Nome = "Caixa Econômica", 
       Owner = "teste" 
      }; 

      yield return new Conta() 
      { 
      ContaId = 3, 
       Nome = "Ourocard VISA", 
       Owner = "teste" 
      }; 

      yield return new Conta() 
      { 
       ContaId = 4, 
       Nome = "American Express", 
       Owner = "teste" 
      }; 
     } 
    } 
} 

Mon Vue:

<h2>View1</h2> 

@Html.DropDownList("teste", ViewBag.ListaContas as SelectList) 

Le menu déroulant est construit avec les quatre options que les Contas() m ethod créé, mais aucun d'eux n'est sélectionné. Qu'est ce que ça pourrait être?

Répondre

5

Vous devez indiquer 3 comme dernier paramètre du constructeur SelectList, au lieu d'un objet.

De plus, votre fonction GetHashCode est semi-cassée (indice: 13 * 7 est une constante).

+0

Oups, je n'ai pas vraiment terminé la classe, je vais vérifier le GetHashCode. =) – Alaor

+0

BTW, il a résolu le problème. Merci beaucoup. – Alaor

Questions connexes