2013-07-30 3 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

Создать ViewModel как это:

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

В моей практике я создаю DropDownList следующим образом:

первый я создаю вид модели

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" }) 
Смежные вопросы