DateOfBirth fejler
Nu har jeg forsøgt at spørge et andet sted, hvor jeg fik skældud over at skjule et eller andet (som jeg så ikke ved hvad er).Jeg får 3 fejl (på Error listen).
2 fejl med denne kode
Severity Code Description Project File Line Suppression State
Error CS0012 The type 'DateTime' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. 1_Views_EmployeePart011_Index.cshtml C:\Users\anjas\source\repos\MySecondMvc\MySecondMvc\Views\EmployeePart011\Index.cshtml 30 Active
og
Severity Code Description Project File Line Suppression State
Error CS1061 'IEnumerable<Employee>' does not contain a definition for 'DateOfBirth' and no accessible extension method 'DateOfBirth' accepting a first argument of type 'IEnumerable<Employee>' could be found (are you missing a using directive or an assembly reference?) 1_Views_EmployeePart011_Index.cshtml C:\Users\anjas\source\repos\MySecondMvc\MySecondMvc\Views\EmployeePart011\Index.cshtml 30 Active
Jeg har en BusinessLayer hvor jeg har 2 klasser;
public class EmployeeBusinessLayer
{
public IEnumerable<Employee> Employees
{
get
{
string connectionString = ConfigurationManager.ConnectionStrings["EmployeeContext"].ConnectionString;
List<Employee> employees = new List<Employee>();
using (SqlConnection con = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("spEmployees_GetAll", con)
{
CommandType = CommandType.StoredProcedure
};
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Employee employee = new Employee
{
EmployeeId = (int)(rdr["EmployeeId"]),
Name = rdr["Name"].ToString(),
Gender = rdr["Gender"].ToString(),
City = rdr["City"].ToString(),
DepartmentId = (int)(rdr["DepartmentId"])
};
if (!(rdr["DateOfBirth"] is DBNull))
{
//employee.DateOfBirth = rdr["DateOfBirth"].ToString();
employee.DateOfBirth = Convert.ToDateTime(rdr["DateOfBirth"]);
}
employees.Add(employee);
}
}
return employees;
}
}
Og
namespace BusinessLayer
{
[Table("tblEmployees")]
public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string City { get; set; }
public DateTime DateOfBirth { get; set; }
public int DepartmentId { get; set; }
}
}
Nu laver jeg så en Controller;
public class EmployeePart011Controller : Controller
{
// GET: EmployeePart011
public ActionResult Index()
{
EmployeeBusinessLayer employeeBusinessLayer = new EmployeeBusinessLayer();
List<Employee> employees = employeeBusinessLayer.Employees.ToList();
return View(employees);
}
}
Og til sidst et view;
@model IEnumerable<BusinessLayer.Employee>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Gender)
</th>
<th>
@Html.DisplayNameFor(model => model.City)
</th>
<th>
@Html.DisplayNameFor(model => model.DateOfBirth)
</th>
<th>
@Html.DisplayNameFor(model => model.DepartmentId)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Gender)
</td>
<td>
@Html.DisplayFor(modelItem => item.City)
</td>
<td>
@Html.DisplayFor(modelItem => item.DateOfBirth)
</td>
<td>
@Html.DisplayFor(modelItem => item.DepartmentId)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.EmployeeId }) |
@Html.ActionLink("Details", "Details", new { id=item.EmployeeId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.EmployeeId })
</td>
</tr>
}
</table>
</body>
</html>
Alle 3 fejl linker til selve viewet og model.DateOfBirth og item.DateOfBirth
Når jeg laver en run to cursor så gennemgår den public IEnumerable<Employee> Employees uden at fejle. det er først når jeg får vist siden, den så fejler med følgende
CS1061: 'IEnumerable<Employee>' does not contain a definition for 'DateOfBirth' and no accessible extension method 'DateOfBirth' accepting a first argument of type 'IEnumerable<Employee>' could be found (are you missing a using directive or an assembly reference?)
Jeg har ikke vist alle klasser under EmployeeBusinessLayer - men det er Tilføj og slet funktioner.
Det skal også siges, at I dag har jeg brugt RIGTIG mange timer på en fejl HTTP Error 500.0 - ANCM In-Process Handler Load Failure. Det der skal til hver gang, er at jeg fjerner NetCore.Platforms og tilføjer den igen gennem NuGetSolution. Men den bliver ved med at markere NetCore delen med gul trekant i BusinessLayer projektet/klassen. Denne her fejl, har jeg dog kun haft i dag, efter jeg opdaterede VS.
En anden ting, jeg har lagt mærke til, det er at der står netstandard version=2.0.0.0 men men jeg bruger altså netstandard 2.0.3. Jeg kan ikke finde den 2.0.0.0 nogen steder.
Det skal tilføjes, at laver jeg DateOfBirth om til en streng, så er der ingen ko på isen nogen steder. Den går glat igennem og viser listen med datoen.
Jeg håber, det giver mening, ellers spørg endelig :-)
Vh
Simsen :-)