ASP.NET MVC 结果未被过滤掉
本文关键字:过滤 结果 NET MVC ASP | 更新日期: 2023-09-27 18:33:48
我有一个页面索引.cshtml,我使用iframes调用另一个页面test.cshtml。页面test.cshtml包含过滤掉某些内容的代码。即使当涉及到 UI 时,值被过滤掉,它也不会显示过滤后的值。你能帮我确定我错过了什么吗?
下面是示例代码
index.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>
test.cshtml
<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');
}
});
});
控制器
public ActionResult GetAllAbstracts(string categoryname)
{
List<Abstracts> abstracts = Helpers.SchedOrgHelpers.LoadAbstracts();
abstracts = abstracts.Where(x => x.Category == categoryname).ToList();
//Populate the Viewbag using the helpers method
ViewBag.abstracts = abstracts;
return View("....");
}
您正在通过 ajax 调用服务器,并在其中将过滤后的数据设置为 ViewBag,但您没有从服务器再次读取(您的页面不会再次在服务器上执行,因为您的调用是通过 ajax 进行的)。
你应该做的是,而不是将其设置为 ViewBag,你应该将其作为 JSON 数据发送(在你的 ajax 成功方法中,解析 json 数组并构建 html 标记并附加/替换特定的 DOM 元素)或返回部分视图,它使用此数据来呈现你需要的任何标记并替换你想要的现有 DOM 元素。