2013-06-05 64 views
2

我有一个AJAX调用返回一个局部视图,但它只返回视图的<div>部分。我的猜测是它忽略了Razor代码。这似乎是一个非常愚蠢的问题,我无法想象出我的生活。MVC部分视图呈现但不执行剃须刀代码

这里是我的局部视图,其整体:

<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> 

这是控制器内return语句由AJAX调用被调用(YES,它击中):

return PartialView("MyPartial", MyModel); 

我已经在上面尝试添加@model IEnumerable<MyType>,但这没有什么区别。

在我的完整视图中,我打电话@Html.Partial("MyPartial", Model)和仍然,只有外部<div>标记显示在我的网页源代码中。

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

+1

你确定让你'C#'更改后建?你有没有尝试在那里设置断点,以确保'Model'不为null? '@ H​​tml.Partial(“MyPartial”,Model)'会将当前模型传递给partial,而不会触及控制器,那时在'Model'中有什么?你的部分是否有'@ model'声明?在子代和父代匹配中执行'@ model'声明?对不起,所有的问题,但这些都是我觉得可能会影响你的'foreach'循环不迭代的一些领域。我保证任何有效的剃须刀代码都在执行。 –

+1

你是否也可以显示ajax调用的代码,以及如何通过helper完成ajax选项的定义? –

+0

我很遗憾,你的询问没有多大帮助,但我解决了这个问题。看到我的[评论](http://stackoverflow.com/questions/16951153/mvc-partial-view-renders-but-does-not-execute-razor-code#comment24478527_16951176)。 +1的努力和良好的故障排除做法。 – Kehlan

回答

1

难道是模型集合是空的吗? 尝试在div内添加另一个元素,如@Model.Count,但在foreach之外。

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

这将测试在foreach不执行的假设由于空收集

+0

我甚至不能开始解释这一点,但在测试中我的电脑被锁定,所以我设法注销并重新登录,现在问题已经消失......这些事情真的让我的吉姆斯沙沙...... – Kehlan