2014-11-18 3 views
0

Я создал класс модели и контроллер, связанные с таблицей базы данных, и хочу заполнить выпадающий список из другой таблицы. моя модель и код контроллера ниже: -генерирует выпадающее меню, используя значения из другой таблицы в asp.net. vb mvc 4

Imports System.Data.Entity 

Namespace employee1 
    Public Class EmployeeController 
     Inherits System.Web.Mvc.Controller 

     Private db As New EmployeeDBContext 
     ' 
     ' GET: /Employee/ 

     Function Index(ByVal sortOrder As String) As ActionResult 
      ViewBag.LastNameSortParm = If(String.IsNullOrEmpty(sortOrder), "LastName_desc", String.Empty) 
      Dim Employee = From e In db.Employee Select e 
      Select Case sortOrder 
       Case "LastName_desc" 
        Employee = Employee.OrderByDescending(Function(e) e.LastName) 
       Case Else 
        Employee = Employee.OrderBy(Function(e) e.LastName) 
      End Select 
      Return View(Employee.ToList()) 
     End Function 

     ' 
     ' GET: /Employee/Details/5 

     Function Details(Optional ByVal id As Integer = Nothing) As ActionResult 
      Dim employeemodel As EmployeeModel = db.Employee.Find(id) 
      If IsNothing(employeemodel) Then 
       Return HttpNotFound() 
      End If 
      Return View(employeemodel) 
     End Function 

     ' 
     ' GET: /Employee/Create 

     Function Create() As ActionResult 
      Return View() 
     End Function 

и это моя модель

Imports System.Data.Entity 
Public Class EmployeeModel 
    Public Property ID() As Integer 
    Public Property CompanyCode() As String 
    Public Property FirstName() As String 
    Public Property LastName() As String 
    Public Property DeptNum() As String 
    Public Property Status() As Char 
    Public Property txtCity() As String 
    Public Property txtState() As String 
    Public Property txtZip() As String 
    Public Property txtPhone() As String 
    Public Property txtPhoneExt() As String 
    Public Property LastReviewDate() As Date 
    Public Property HireDate() As Date 

End Class 

Public Class EmployeeDBContext 
    Inherits DbContext 
    Public Property Employee() As DbSet(Of EmployeeModel) 

End Class 

Я хочу выпадающий список в создании представления для состояния из другой таблицы с именем IDStatus зрения как

@Using Html.BeginForm() 
    @Html.ValidationSummary(True) 
    @<fieldset> 
     <legend>EmployeeModel</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(Function(model) model.CompanyCode) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(Function(model) model.CompanyCode) 
      @Html.ValidationMessageFor 
     </div> 

<!-- how do i use dropdown list here which is from different table?--> 
    </fieldset> 
End Using 

ответ

0
create viewmodel and pass both table properties in that 
public class viewmodel 
{ 
public table1 Table1{get;set;} //return your first table properties here 
public table2 Table2{get;set;} //return your second table properties here 
} 

In view 
@htnl.dropdownlistfor(m=>m.Table2.propertyname,-----)`enter code here` 
3

Либо вы можете добавить еще одно свойство в виде коллекции той же модели, либо вы можете заполнить эту коллекцию в ViewBage и использовать ее так же, как и ваш вид.

На контроллере

ViewBag.DropDownCollection = "Collection" 

В View

@Html.DropDownList("dropDownName",ViewBag.DropDownCollection) 

Fiddle

+1

Не забудьте привести объект ViewBag к SelectList – Thijs

+0

, если это полезно тогда принимать это как ответ :) –

+0

И не используйте '@ Html.DropDownList()'. Всегда используйте сильно типизированные помощники '@ Html.DropDownListFor (m => m.YourProperty, (SelectList) ViewBag.YourCollection)' –