局部视图中的模型未返回任何数据

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 表单返回整个页面

局部视图表单上的 HiddenFor 不包含任何元素

Crystal Reports 未使用 Oracle 驱动程序从某些 Oracle 视图返回数据

在 NavigationView 中清除 SwiftUI 列表未正确返回默认值

如何处理返回 PartialView 的 ajax 调用控制器操作中的模型状态错误