-1

How to display data using Razor view using SqlDataReader in MVC? I have tried something like this.

Controller code:-

public ActionResult UserDetails(DashBoard dash)
    {            
        using (var cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
        {
            String sql = "SELECT DU.UserRMN, MU.Name, DeptName, MgrID, TLeadID FROM Details_Users DU, Master_Users MU where DU.UserRMN=MU.UserRMN";
            SqlCommand cmd = new SqlCommand(sql, cn);           
            cn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            List<DashBoard> model = new List<DashBoard>();
            while(rdr.Read())
            {
                var details = new DashBoard();
                details.UserRMN = rdr["UserRMN"].ToString();
                details.Name = rdr["Name"].ToString();
                details.DeptID = rdr["DeptID"].ToString();
                details.MgrID = rdr["MgrID"].ToString();
                details.TLeadID = rdr["TLeadID"].ToString();
                model.Add(details);
            }
            return View(model);
        }  
    }
Priya
  • 1,359
  • 6
  • 21
  • 41
Vivek Pandey
  • 21
  • 1
  • 1

1 Answers1

7

Not sure what your question is but here is how to pass your model object to corresponding view.

Amend your controller's return line by adding view name to which you want to pass model object and then as second argument add model object:

public ActionResult UserDetails(DashBoard dash)
{ 

        using (var cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
        {
            String sql = "SELECT DU.UserRMN, MU.Name, DeptName, MgrID, TLeadID FROM Details_Users DU, Master_Users MU where DU.UserRMN=MU.UserRMN";
            SqlCommand cmd = new SqlCommand(sql, cn);           
            cn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            List<DashBoard> model = new List<DashBoard>();
            while(rdr.Read())
            {
                var details = new DashBoard();
                details.UserRMN = rdr["UserRMN"].ToString();
                details.Name = rdr["Name"].ToString();
                details.DeptID = rdr["DeptID"].ToString();
                details.MgrID = rdr["MgrID"].ToString();
                details.TLeadID = rdr["TLeadID"].ToString();
                model.Add(details);
            }
            return View("ViewName", model);
        } 

Your View Should look like this:

        @model IEnumerable<Models.DashBoard>
        @{
            ViewBag.Title = "Dashboard";
        }

        <h2>Dashboard</h2>

        @foreach(var item in Model){
            <div>
                <li>
                    @item.Name
               </li>
               <li>
                    @item.DeptID 
               </li>
               ....
            </div>
        }
Husein
  • 177
  • 8