Take data from different tables and display it in the View Index in mvc4

I have 2 tables Work_tableand Employee_table. I want to display emp_idfrom Work_tableand the corresponding emp_namefrom Employee_tablein the index view Employee_table. my models:

namespace MvcConQuery.Models
{
[Table("Work_Table")]
public class EnquiryModel
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public Int32 Enq_id { get; set; }
[Required]
[Display(Name="Name")]
public string CustomerName { get; set; }
[ReadOnly(true)]
public string Date
{
get
{
DateTime Date = DateTime.Now;
return Date.ToString("yyyy-MM-dd"); ;
}
set{}
}
[Required]
[Display(Name = "Region")]
public string Region { get; set; }
[Required]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Entered phone number format is not valid.")]
[Display(Name = "Phone number")]
public string Ph_No { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email_id")]
public string Email_id { get; set; }
[Required]
[Display(Name = "Address")]
public string Address { get; set; }
[Required]
[Display(Name = "Query")]
public string Query { get; set; }
public string Referral { get; set; }
public string Feedback { get; set; }
public string Status { get; set; }
public Int32? Emp_id { get; set; }
public string FollowUpDate { get; set; }
public List<EmployeeModel> Employees { get; set; }
}}


namespace MvcConQuery.Models
{
[Table("Employee_Table")]
public class EmployeeModel
{

[Key,Column(Order=0)]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
//[ForeignKey("EnquiryModel")]
public Int32 Emp_id { get; set; }
public string Emp_Name{ get; set; }
//[Key,Column(Order=1)]
public string Region { get; set; }
//[ForeignKey("Region")]
public string Emp_PhNo { get; set; }
public string Emp_Address { get; set; }
public List<EnquiryModel> Enquires { get; set; }


}

}

How to write a controller? I am stuck while writing a function in the controller.

public ActionResult Index()
{
} 

Please suggest a solution. thanks in advance.

Hi

+3
source share
2 answers

I made a mistake earlier, I made from your code that there are many, many relationships between tables Employeeand Work. For my convenience, I used Jobas the name for your table / model Work.

, EmployeeIds EmployeeNames . JobName viewmodel, .

ViewModel EmployeeViewModel index view IEnumerable<EmployeeViewModel>. EmployeeViewModel - -

    public class EmployeeViewModel
    {
        public int EmployeeId { get; set; }

        public string EmployeeName  { get; set; }

        public string JobName { get; set; }

        //..Other memberVariables..
    }


, -  
Employee

        public class Employee
        {
            [Key]
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            public int EmployeeId { get; set; }

            public string EmployeeName { get; set; }

            public string Address { get; set; }

            public virtual ICollection<Job> Jobs { get; set; }
        }

WorkTable, Job

    public class Job
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int JobId { get; set; }

        public string JobName { get; set; }

        public JobCategory JobCategory { get; set; }

        public int EmployeeId { get; set; }

        public virtual ICollection<Employee> Employees { get; set; }
    }

, IEnumerable<EmployeeViewModel> . View IEnumerable<EmployeeViewModel>, , , -

    public ActionResult Index()
    {
        //..something like this..this is IQueryable..
        //...convert this to IEnumerable and send this as the model to ..
        //..the Index View as shown below..here you are querying your own tables, 
        //.. Employee and Job,and binding the result to the EmployeeViewModel which
        //.. is passed on to the Index view.
        IEnumerable<EmployeeViewModel> model=null;
        model = (from e in db.Employees
                    join j in db.Jobs on e.EmployeeId equals j.EmployeeId
                    select new EmployeeViewModel
                    {
                        EmployeeId = e.EmployeeId,
                        EmployeeName = e.EmployeeName,
                        JobName = j.JobName
                    });

        return View(model);
    }

:

@model IEnumerable<MyApp.Models.EmployeeViewModel>

@{
    ViewBag.Title = "Index";
}


<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.EmployeeId)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.EmployeeName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.JobName)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.EmployeeId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.EmployeeName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.JobName)
        </td>
    </tr>
}

</table>

, , . , - . , /. , . , .

+3

- , EmployeeviewModel

model = (from e in db.Employees
                    join j in db.Jobs on e.EmployeeId equals j.EmployeeId
                    select new EmployeeViewModel
                    {
                        EmployeeId = e.EmployeeId,
                        EmployeeName = e.EmployeeName,
                        JobName = j.JobName
                    });
0

All Articles