asp.net-mvc - MVC 视图模型返回 NULL
问题描述
我正在使用所涉及的实体框架创建我的第一个 MVC 应用程序,但遇到了一些奇怪的问题。
我只是创建一个简单的视图,它带来了一个包含一些基本 SQL SP 结果的模型,但作为返回视图,模型返回 null,因此给了我一个“对象引用”错误。该错误不足为奇,因为显然如果 Model 返回 null,则没有对象,但我可以毫无问题地在 SSMS 中执行 SP 并获得预期的返回值。
如果您想查看,这是我的代码:
控制器
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
任何帮助表示赞赏,已经进行了很长一段时间的调试。
我对理论的一个担忧是实体框架返回一个 ObjectResult 而不是 IEnumerable ,但这会导致该转换尝试出错。不幸的是,我无法让我的控制器级别代码达到断点,因此我无法确认。
解决方案
第一个电话是调试你自己的代码,看看发生了什么。停止像这样做一个衬里:
return View(empdb.GetColors(0,""));
相反,像这样分开代码:
var colors = empdb.GetColors(0,"");
//some extra checks here, decide what you do if there are no colors returns,
//maybe return an empty list for example so you don't get null errors any more.
return View(colors);
现在您可以在颜色行上放置一个断点,然后查看您的存储库返回的内容。
您可以进入 repo 代码以查看发生了什么。你也可以用你的代码来做这件事,你可以在 return 语句上放一个断点,当你停在那里时,再次进入代码,但是如果你远离那些讨厌的一个衬里,那就容易多了。
推荐阅读
- python - 将numpy嵌套数组重塑为数组
- python - Random integer generating
- javascript - Filling HTML form from Node.js server
- java - 在 Spring 提供的课程上应用建议?
- python - 在python中将字典切片低于某个键值
- r - glm - 正确指定的模型,在 R 中没有预测质量
- javascript - 从客户端 JavaScript 可恢复上传?
- c# - 各种类型变量序列化后的字节形式
- servlets - J2EE - 过滤器`doFilter`方法没有被调用
- mysql - MySQL第一条件匹配优先级