MVC部分视图呈现但不执行Razor代码

3

我有一个AJAX调用返回部分视图,但它只返回视图的<div>部分。我猜它忽略了Razor代码。这似乎是一个极其愚蠢的问题,但我无论如何都解决不了。

以下是完整的部分视图:

<div id="result">
@foreach (var log in Model)
{
    <br />
    <h3><b>Log ID: </b>@log.ID</h3>
    <h3><b>Log Time: </b>@log.LogTime</h3>
    <h3><b>Event Type: </b>@log.EventType</h3>
    <h3><b>Message: </b>@log.Message</h3>
    <h3><a href="Log/Details/@log.ID">View Details/Delete Entry</a></h3>
}
</div>

所有AJAX调用返回的内容都是:
<div id="result">
</div>

这是由AJAX调用的控制器内的返回语句(是的,它被触发了):

return PartialView("MyPartial", MyModel);

我已经尝试在顶部添加@model IEnumerable<MyType>,但没有任何变化。

在我的完整视图中,我调用@Html.Partial("MyPartial", Model),但仍然只有外部的<div>标签显示在页面源代码中。

这是一个非常令人沮丧的问题,所以任何帮助将不胜感激。


1
你在修改 c# 代码后是否确保进行了构建?你尝试过在那里设置断点以确保 Model 不为空吗?@Html.Partial("MyPartial", Model) 将使用当前的 Model 并将其传递到局部视图,而不会触发控制器,此时 Model 中有什么内容?你的局部视图中是否有 @model 声明?父子视图中的 @model 声明是否匹配?抱歉提出这么多问题,但我认为这些是影响你的 foreach 循环无法迭代的一些方面。我保证任何有效的 Razor 代码都能执行。 - Travis J
1
你能否展示一下Ajax调用的代码,以及如果通过helper完成,Ajax选项是如何定义的? - Travis J
1个回答

1

Model集合为空吗? 尝试在div标签内添加一个像@Model.Count这样的元素,但在foreach外面。

或者,在控制器中设置断点,确保集合至少包含一个元素。

这将测试 foreach 未执行的假设,因为集合为空。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接