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("....");
        }

ASP.NET MVC 结果未被过滤掉

您正在通过 ajax 调用服务器,并在其中将过滤后的数据设置为 ViewBag,但您没有从服务器再次读取(您的页面不会再次在服务器上执行,因为您的调用是通过 ajax 进行的)。

你应该做的是,而不是将其设置为 ViewBag,你应该将其作为 JSON 数据发送(在你的 ajax 成功方法中,解析 json 数组并构建 html 标记并附加/替换特定的 DOM 元素)或返回部分视图,它使用此数据来呈现你需要的任何标记并替换你想要的现有 DOM 元素。