在DropDownList ASP MVC 3和EF中从基础加载数据时出错

时间:2013-05-07 08:30:09

标签: c# asp.net asp.net-mvc asp.net-mvc-3 sql-server-2005

我正在使用C#和SQL Server 2005开发ASP .Net MVC 3应用程序 我也使用实体框架和代码优先方法 我创建了一个'DropDownList'来从我的基表中加载数据 但结果是,这个DropDownList向我显示:'NameofApplication.Models.NameofTable'
我不知道为什么?
这是视图中DropDownlist的声明:

<%:Html.Label("Gamme :")%>
<%: Html.DropDownList("ID_Gamme", String.Empty) %>

这是Profile_Ga的控制器:

namespace MvcApplication2.Controllers
{ 
    public class ProfileGaController : Controller
    {
        private GammeContext db = new GammeContext();

        //
        // GET: /ProfileGa/

        public ViewResult Index(Profile_Ga profile_ga)
        {
            ViewBag.ID_Gamme = new SelectList(db.Profil_Gas, "ID_Gamme", profile_ga.ID_Gamme);
            return View(db.Profil_Gas.ToList());


        }

最后这是模特:

namespace MvcApplication2.Models
{
    public class Profile_Ga
    {
        [Required]
        [Key]
        [Display(Name = "ID Gamme:")]
        public string ID_Gamme { get; set; }

        [Required]
        [Display(Name = "Gamme Entrante:")]
        public string In_Ga { get; set; }

        [Required]
        [Display(Name = "Gamme Sortante:")]
        public string Out_Ga { get; set; }

        [Required]
        [Display(Name = "Gamme Suivante:")]
        public string Next_Gamme { get; set; }

        [Required]
        [Display(Name = "Etat:")]
        public string Etat { get; set; }
        }
}

PS:
基表中的表名是Profile_Ga

1 个答案:

答案 0 :(得分:1)

您正在返回Profile_Ga的集合,我认为您打算使用

<%: Html.DropDownList("ID_Gamme", 
    new SelectList(Model, "ID_Gamme", "ID_Gamme ")) %>

虽然这看起来不正确。在你的方法中你做了这个

public ViewResult Index(Profile_Ga profile_ga)
{
    ViewBag.ID_Gamme = new SelectList(
        db.Profil_Gas, "ID_Gamme", profile_ga.ID_Gamme);
    // did you plan to return a single instance here
    // and use that as your model
    return View(single_instance_of_Profile_Ga );
}

然后你的观点看起来像这样

// then you can declare the dropdown like this
<%: Html.DropDownListFor(m => m.ID_Gamme, (SelectList)ViewBag.ID_Gamme) %>

更新(来自评论)

  

Thx,“您希望显示从数据库中获取的列表   你的观点“ - &gt;是的,这就是我想要的东西

public ViewResult Index(Profile_Ga profile_ga)
{
    // you need to decide if you want to use this
    // ViewBag.ID_Gamme = new SelectList(
    //     db.Profil_Gas, "ID_Gamme", profile_ga.ID_Gamme);
    // or this
    // return View(db.Profil_Gas.ToList());
    // but since it seems you are confuse to what you are doing
    // then I suggest you just do this
    // this will return a collection model to your view
    return View(db.Profil_Gas.ToList());
}

然后在你看来你需要这样做

<%: Html.DropDownList("ID_Gamme", SelectList(Model) %>
  

你打算做那个下拉菜单 - &gt;我选择的时候我想要的   item ,,,出现一个弹出窗口。数据的加载总是错误的,为什么我   将编辑

您需要编辑您的问题,因为您最初没有问过这个问题。所以我的问题是弹出窗口会有什么样的编辑形式?你需要提出一个新问题,因为你必须解释它,我必须回答,你必须在评论中提问,这将是一个长时间的聊天 - 所以不会那样。无论如何,这是一个新问题并且提出问题是免费的;)