Я создаю свое первое приложение MVC с задействованной структурой сущностей, но у меня возникла странная проблема.
Я просто создаю простое представление, в котором приводится Модель, содержащая некоторые основные результаты SQL SPно в качестве возвращаемого представления Модель возвращает значение NULL, поэтому выдает ошибку «Ссылка на объект».Ошибка не вызывает удивления, потому что, очевидно, если Model возвращает null, объект отсутствует, но я могу без проблем выполнить SP в SSMS и получить ожидаемые возвращаемые значения.
Вот мой код, если вы хотитесм .:
КОНТРОЛЛЕР
public class ColorController : Controller
{
public ActionResult Index()
{
ColorsMainEntities empdb = new ColorsMainEntities();
return View(empdb.GetColors(0,""));
}
[HttpPost]
public ActionResult Index(string customerName)
{
ColorsMainEntities empdb = new ColorsMainEntities();
return View(empdb.GetColors(0,""));
}
}
ПРОСМОТР
@model IEnumerable<Colors_Test.M_Colors>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Colors</title>
</head>
<body>
@using (Html.BeginForm("Index", "Color", FormMethod.Post))
{
<span>Customer Name:</span> @Html.TextBox("CustomerName")
<input type="submit" value="Search" />
<br />
<br />
<table cellpadding="0" cellspacing="0">
<tr>
<th>ID</th>
<th>Color</th>
<th>Category</th>
<th>Type</th>
<th>RGBA</th>
<th>Hex</th>
</tr>
@foreach (M_Colors color in Model)
{
<tr>
<td>@color.ColorID</td>
<td>@color.Color</td>
<td>@color.Category</td>
<td>@color.Type</td>
<td>@color.RGBA</td>
<td>@color.Hex</td>
</tr>
}
</table>
}
</body>
</html>
SP
ALTER PROCEDURE [dbo].[GetColors] (@pnColorID INT = 0, @pcColor VARCHAR(999) = '')
AS
BEGIN
IF(@pcColor <> '')
BEGIN
SELECT * FROM M_Colors WHERE Color LIKE '%' + @pcColor + '%'
END
ELSE
BEGIN
SELECT * FROM M_Colors
END
END
Любая помощь приветствуется, я довольно долго занимался этой отладкой.
Моя проблема в теории заключается в том, что платформа Entity возвращает ObjectResult вместо IEnumerable, но это приведет к ошибке в этом преобразовании.попытка.К сожалению, я не могу заставить свой код уровня контроллера достигать контрольных точек, поэтому я не могу это подтвердить.