我有一个页面index.cshtml,我用iframe调用另一个页面test.cshtml。页面test.cshtml包含过滤掉一些东西的代码。即使这些值在UI中被过滤掉,也没有显示过滤后的值。能否帮助我找出我所缺少的东西。
以下是示例代码
index.cshtml
&& echo 1
test.cshtml
<div class="wrapper">
<div class="h_iframe">
<img class="ratio" src="/images/ratio16x9.png" />
<iframe src="@Url.Action("test","Home")" frameborder="0"></iframe>
</div>
</div>
控制器
<div class="container">
<div id="onpageloadvalues">
@foreach (var catgoryabstractslists in ViewBag.abstracts)
{
<div><a href="#" data-id='@catgoryabstractslists.AbstractID' id='CategorySelect_@(catgoryabstractslists.AbstractID)' class="select-abstracts">Abstract #@catgoryabstractslists.AbstractID - @catgoryabstractslists.AbstractTitle</a></div>
}
</div>
</div>
$('.select-abstracts').click(function () {
var data = $(this).attr('data-id');
$.ajax({
url: '@Url.Action("GetAllAbstracts", "Home")',
data: { abstractid: data },
success: function (result) {
},
error: function () {
alert('Error');
}
});
});
答案 0 :(得分:2)
您正在通过ajax调用服务器,并且您正在将过滤后的数据设置为ViewBag,但您不是从服务器再次读取该数据(由于您的调用是通过ajax,因此您的页面不会再次在服务器上执行)。
你应该做的是,而不是将其设置为ViewBag,你应该将它作为JSON数据发送(并在你的ajax成功方法中,解析json数组并构建html标记并追加/替换特定的DOM元素)或返回局部视图,它使用此数据呈现您需要的任何标记,并替换您想要的现有DOM元素。