我有以下剃刀代码:
<div class="panel panel-default col-xs-10 col-sm-10 col-md-10 col-lg-10">
<div class="panel-body">
@if (Model != null)
{
var m = Model.Requests.FileData.OrderBy(p => p.FileName);
if (m.Count() > 0)
{
foreach (var item in m)
{
if (Model.data.ToLower().Contains("dns"))
{
<div class="row">
<span>
@Html.DisplayFor(mi => item.FileName, new { @class = "form-label" })
<span class="glyphicon glyphicon-trash"></span>
</span>
</div>
}
}
}
}
</div>
</div>
这是一个显示数据库中上传文件的面板。 选择文件后,控制器将其放入数据库,然后返回具有上述代码的部分视图。
当我调试应用程序并逐步执行上面的代码时,它会执行它应该执行的操作,但是当我查看呈现页面的html时,面板是空的。
呈现页面:
<div class="panel panel-default col-xs-10 col-sm-10 col-md-10 col-lg-10">
<div class="panel-body">
</div>
</div>
我在这里缺少什么,为什么html没有呈现?
[编辑]
断点:
我发现只有第二个IF部分中的所有内容都不是渲染元素。
使用此:
<span class="form-label">@item.FileName</span>
也不会渲染任何东西。
[编辑]
将viewmodel更改为具有名为List FileData的属性并将数据加载到其中。
然后改变剃刀以从中读取。
<div class="panel panel-default col-xs-10 col-sm-10 col-md-10 col-lg-10">
<div class="panel-body">
@if (Model != null && Model.FileData != null && Model.FileData.Any())
{
var m = Model.FileData.OrderBy(p => p.FileName);
foreach (var item in m.ToList())
{
<div class="row">
<span>
<span class="form-label">@item.FileName</span>
<span class="glyphicon glyphicon-trash"></span>
</span>
</div>
}
}
</div>
</div>
不幸的是,仍然没有渲染。
答案 0 :(得分:1)
在action方法中,尝试在查询中包含相对对象。考虑这个例子:
var model = db.MyModels
.Include(m=>m.Requests.FileData)
.FirstOrDefault(m=>m.ID==Id);
另外,请不要忘记添加System.Data.Entity命名空间。
答案 1 :(得分:1)
我找到了问题。 在我的Jquery Ajax代码中,我将dataType设置为&#39; json&#39;。 因为Ajax期望json得到回报但得到了HTML然后它是一个错误所以我的面板没有更新。 所以返回的数据对象的statusText是“好”。而且没有错误。
I found out what I did wrong here
我删除了dataType选项,现在一切正常。
感谢所有帮助的尝试。