2013-07-30 150 views
0

我在我的數據庫中有一個表格,我選擇所有行填充到我的視圖中的下拉列表中。用數據庫中的值填充下拉列表 - MVC4

我無法理解我該如何填寫數值。

有人能幫我一把嗎?

我的代碼:

型號:

public class MyList 
    { 
     public int id { get; set; } 
     public string name{ get; set; } 
    } 

    public class Empresas 
    { 
     public static IEnumerable<MyList> Getmyinformation() 
     { 
      var list = new List<MyList>(); 
      string connection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 

      using (var con = new SqlConnection(connection)) 
      { 
       con.Open(); 
       using (var command = new SqlCommand("SELECT * FROM mytable", con)) 
       { 
        SqlDataReader reader = command.ExecuteReader(); 
        while (reader.Read()) 
        { 
         string Name= reader[1] as string; 
         list.Add(new MyList() { name= Name}); 
        } 
       } 
       con.Close(); 
      } 
      return list; 
     } 
    } 

    public class DefaultConnection : DbContext 
    { 
     public DbSet<MyList> lat { get; set; } 
    } 

控制器:

private DefaultConnection db = new DefaultConnection(); 
public ActionResult Add() 
     { 
      return View(db.lat.ToList()); 
     } 

查看:

@Html.DropDownListFor("-- Select --", new SelectList("")) < === ????我不知道

+0

你想用這個下拉菜單做什麼?它應該填充任何模型屬性? –

+0

我想從我的表中選擇數據並自動將其插入到我的下拉列表中。因此,用戶可以選擇一個 – user2232273

+0

@ user2232273爲什麼使用ADO.Net和EF? – jonni

回答

0

像這樣創建一個視圖模型:

public class ListViewModel 
{ 
    public MyList MyList { get; set; } 
    public int SelectedId { get; set; } 
} 

然後,改變你的行動是:

public ActionResult Add() 
{ 
    var viewModel = new ListViewModel { MyList = db.lat.ToList() }; 
    return View(viewModel); 
} 

,然後,這是你將在你查看的內容:

@model MyApp.ViewModels.ListViewModel 

@Html.DropDownListFor(model => model.SelectedId, new SelectList(Model.MyList as IEnumerable, "Id", "Name")) 
+0

你是什麼意思創建一個viewmodel?修改我自己的或創建一個新的? – user2232273

+0

創建一個新的。而且,我建議您閱讀有關MVC的更多信息。 – ataravati

+0

我知道..即時通訊工作了解更多。 – user2232273

0

試試這個,

查看: -

@Html.DropDownListFor(m => m.CustomerId, Model.customerNameList, "--Select--") 

控制器: -

public ActionResult CustomerInfo() 
     { 

      var List = GetCustomerName(); 
      ViewBag.CustomerNameID = new SelectList(List, "CustomerId", "customerName"); 
      ViewBag.RegisterItems = GetAllRegisterData(); 
      return View(); 
     } 

public List<CustomerModel> GetCustomerName() 
     { 
      // Customer DropDown 
      using (dataDataContext _context = new dataDataContext()) 
      { 
       return (from c in _context.Customers 
         select new CustomerModel 
         { 
          CustomerId = c.CID, 
          customerName = c.CustomerName 
         }).ToList<CustomerModel>(); 
      } 
     } 

型號:

public class CustomerModel 
    { 
     public int CustomerId { get; set; } 

     [StringLength(9), Required, DisplayName("Social security number")] 
     [RegularExpression(@"\d{3}-\d\d-\d{4}", ErrorMessage = "Invalid social security number")] 
     public string customerName { get; set; } 

     public List<MyListItems> customerNameList { get; set; } 
} 
1

在我的實踐,我創建下拉列表如下:

首先我創建視圖模型

public class MyObj 
{ 
    public int id { get; set; } 
    public string name{ get; set; } 
} 
// viewmodel 
public class MyviewModel 
{ 
    public IQuerable<MyObj> MyObjs{get;set;} 
    public Other Other{get;set;} 
} 

然後我通過該模型從控制器以查看

private DefaultConnection db = new DefaultConnection(); 
public ActionResult Index() 
{ 
    var drop = new MyviewModel 
    { 
     MyObjs = db.MyObjs,// selecting table... 
     Other = new Other 
    } 
    return View(drop); 
} 

在控制器

@Html.DropDownListFor(model => model.Other.MyObjId, new SelectList(Model.MyObjs , "id", "name","--select--")) 
+0

我在哪裏從我的表中選擇? – user2232273

+0

我編輯了我的答案,請認真看看。 –

+0

是的,我看到埃爾文... thx的幫助..但我失蹤的東西,因爲我無法從我的數據庫中選擇任何表 – user2232273

2

只需在控制器類型:

ViewBag.CategoryList = new SelectList(db.Categories.ToList(), "Id", "Name"); 

並鑑於寫:

@Html.DropDownListFor(model => model.CategoryId, ViewBag.CategoryList as IEnumerable<SelectListItem>, new { @class = "anyclass" }) 
相關問題