局部视图中的模型未返回任何数据
Posted
技术标签:
【中文标题】局部视图中的模型未返回任何数据【英文标题】:Model in Partial View Did Not Return Any Data 【发布时间】:2019-06-27 06:04:03 【问题描述】:我不太确定我在这里错过了什么。我已经在_Layout
中调用了聊天控制器,如下所示:
<div id="ChatContainer" class="chat-popup">
@html.Action("Index", "Chats")
</div>
控制器返回部分视图,模型如下:
public class ChatsController : Controller
private ApplicationDbContext db = new ApplicationDbContext();
public ActionResult Index()
var chats = db.Set<Chat>().ToList();
return PartialView("_Index", chats);
然后渲染局部视图:
@model IEnumerable<ERP.Models.Chat>
@
Layout = null;
@
foreach (var chat in Model)
@Html.Raw(chat.Message);
这不是返回任何错误,也没有返回任何数据。我尝试使用 SQL Profiler 进行跟踪,这甚至不会触发表聊天。
【问题讨论】:
如果表没有被触发,那是 EF 问题而不是 mvc 问题! 你需要使用Html.RenderAction
你调试代码了吗?索引动作的代码是否执行?
@ChetanRanpariya 是的,它被执行了。我尝试在_Index
中添加一些纯文本,结果显示
@ChetanRanpariya 我尝试使用@Html.RenderAction("Index", "Chats")
也没有用
【参考方案1】:
您的实体框架代码看起来不错。我只是想知道传递给 ApplicationDbContext 的连接字符串是否与您正在分析并拥有数据的数据库相同。有时很容易错过这一点,因为具有默认策略的实体框架会自动创建一个数据库,如果它不存在.
[更新]
您的部分视图代码有点不正确。以下为写法:
@model IEnumerable<ERP.Models.Chat>
@
Layout = null;
@
foreach (var chat in Model)
@Html.Raw(chat.Message) // Put the @ symbol before Html
【讨论】:
是的,它在同一个数据库中。并且该表已经存在于数据库中。我试图删除数据库并执行update-database
并成功创建表。我将尝试创建新项目来隔离问题。谢谢。
好的,检查更新的答案。这可能是根本原因。您的 EF 代码没有任何问题。
我给你 +1 的收获,我很抱歉我错过了,我刚刚创建了它。但在实际代码中,它有@
【参考方案2】:
试试这个:
public class ChatsController : Controller
public ActionResult Index()
using (ApplicationDbContext db = new ApplicationDbContext())
var chats = db.Set<Chat>().ToList();
return PartialView("_Index", chats);
【讨论】:
【参考方案3】:对不起大家。看起来这不是编码问题。
我不知道这是什么原因造成的。我尝试在另一台 PC 中加载所有包并编译它,这很好。
很抱歉我不能在这里给出答案,但我记得上次更新SignalR
并将id从Guid
更改为Int
。
【讨论】:
以上是关于局部视图中的模型未返回任何数据的主要内容,如果未能解决你的问题,请参考以下文章
在剑道窗口内时,局部视图中的 MVC4 Ajax 表单返回整个页面
Crystal Reports 未使用 Oracle 驱动程序从某些 Oracle 视图返回数据