是否可以刷新视图中的ViewBag值?

2024-01-07

我正在尝试做一个动态下拉列表: 我从数据库中获取下拉列表的选项并将它们放入对象列表中。根据复选框值,我从列表中删除对象并将该列表设置为 ViewBag 值。

public ActionResult ThematicManagement(string Id, string IsAdult, string flagAdult)
             {
                .....
                ViewBag.DDL = null;      

                var response = VodCatalogBUS.GetParentThematics(); 
                List<oboThematic> list = new List<oboThematic>();
                list = response.Data;
                if (IsAdult == null || IsAdult == "false")            
                    list.RemoveAll(x => x.IsAdult == true && x.Id != 1007);           
                else 
                    list.RemoveAll(x => x.IsAdult == false && x.Id != 1007);                

                ViewBag.DDL = new SelectList(list, "Id", "Name");
                ....   

然后在我看来,我像这样填写下拉列表:

 @Html.DropDownList("ParentThematic", (SelectList)ViewBag.DDL, new { @class="dropdown" })    

<label><input type="checkbox" value="" id="ChkIsAdult" name="ChkIsAdult">Adulte</label>

这里没有问题,我在控制器中的RemoveAll之后获得了带有4个选项的下拉列表。然后,如果我单击该复选框,我必须获得其他 3 个选项。

因此,我使用 ajax 调用返回控制器,目的是更新 Viewbag 的值:

 $('#ChkIsAdult').change(function () {                 
                var IsAdult = $('#ChkIsAdult').is(':checked');
                var url = dev + "/Legacy/ThematicManagement";
                $.ajax({
                    url: url,
                    cache: false,
                    type: 'POST',
                    data: {                        
                        IsAdult: IsAdult,
                        flagAdult : 'true',
                    },
                    success: function () {
                        alert('test');
                    }
                });               
            })

我返回控制器,但我认为视图没有刷新,因此我在单击复选框后检索下拉列表的旧值(4 个选项)。

我也尝试用 ViewData 和 TempData 来替换 ViewBag,但我总是相同的 proprem !

根据您的说法,这是一个好的解决方案吗?能行吗?


这是回应:

控制器

 var response = VodCatalogBUS.GetParentThematics(); 
        List<oboThematic> list = new List<oboThematic>();

        list = response.Data;

            list.RemoveAll(x => x.IsAdult == true && x.Id != 1007);

            var responseAdult = VodCatalogBUS.GetParentThematics(); 
            List<oboThematic> listAdult = new List<oboThematic>();
            listAdult = responseAdult.Data;
            listAdult.RemoveAll(y => y.IsAdult == false && y.Id != 1007);                

        ViewBag.DDL = new SelectList(list, "Id", "Name");
        ViewBag.DDLAdult = new SelectList(listAdult, "Id", "Name");

View :

  @Html.DropDownList("ParentThematic", (SelectList)ViewBag.DDL, new { @class="dropdown" })
@Html.DropDownList("ParentThematicAdult", (SelectList)ViewBag.DDLAdult, new { @class="dropdown" , @style="display:none"})

JS :

$('#ChkIsAdult').change(function () {                 
                if ($('#ChkIsAdult').is(':checked')) {
                    $('#ParentThematic').hide();
                    $('#ParentThematicAdult').show();
                    var value = $('#ParentThematicAdult').val();
                    var IsAdult = $('#ChkIsAdult').is(':checked');
                    var url = dev + "/Legacy/ThematicManagement";
                    $.ajax({
                        url: url,
                        cache: false,
                        type: 'POST',
                        data: {
                            Id: value,
                            IsAdult: IsAdult
                        },
                        success: function (data) {
                            $('#result').empty().append($(data).find('table'))
                        }
                    });

                }
                else
                {
                    $('#ParentThematic').show();
                    $('#ParentThematicAdult').hide();
                    var value = $('#ParentThematic').val();
                    var IsAdult = $('#ChkIsAdult').is(':checked');
                    var url = dev + "/Legacy/ThematicManagement";
                    $.ajax({
                        url: url,
                        cache: false,
                        type: 'POST',
                        data: {
                            Id: value,
                            IsAdult: IsAdult
                        },
                        success: function (data) {
                            $('#result').empty().append($(data).find('table'))
                        }
                    });
                }                            
            })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以刷新视图中的ViewBag值? 的相关文章

随机推荐

  • 硬盘序列号可以/为什么会改变

    我们的反盗版软件根据硬盘序列号来识别人员 我相信这是一个恒定的功能 除非用户更改其主要物理驱动器 否则不会改变 如果我错了 请纠正我 我们使用WMIpython模块获取用户的硬盘序列号 我们的 2 台测试计算机的硬盘序列号已更改 但我们根本
  • 为什么我们必须定义一个在类中初始化的 const 静态成员

    我们知道 可以在类结构内部初始化整型 const 静态成员 这在初始化后在类结构中使用常量时很有用 例如 它可以用作 int 数组的大小 看下面的代码 class MyClass static const int num 100 int e
  • 多个线程在同一全局内存位置写入相同的值

    这个问题与以下问题密切相关this one https stackoverflow com questions 8315931 does writing the same value to the same memory location
  • 在文本区域内建议/自动完成的 jQuery 插件 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一个 jQuery 插件可以在文本区域内建议 自动完成 我想要的是在文本区域中向用户提供建议的单
  • 现代 C 和 C++ 中是否已弃用 f(void)? [复制]

    这个问题在这里已经有答案了 我目前正在重构 整理 C 项目中使用的一些旧 C 代码 并经常看到以下函数 int f void 我倾向于写成 int f 是否有任何理由不在整个代码库中将 void 替换为 以提高一致性 或者两者之间是否存在我
  • 如何使用 cassandra-cli 更新 gc_grace_seconds?

    更新列族并更改其列族的命令是什么gc grace seconds价值利用cassandra cli 对于CQLSH alter table
  • 为反应式管道编写方面

    我正在为返回承诺的方法编写方面 考虑以下方法 public Mono
  • 更新现有的 JobDataMap

    我有一份已经安排好的 Quartz 工作 我想更新与之关联的 JobDataMap 如果我得到一个 JobDataMapJobDataMap jobDataMap scheduler getJobDetail getJobDataMap 那
  • 防止 window.open 聚焦

    我想使用 window open 在 Google Chrome 的新选项卡中打开页面 但我不希望该窗口在打开后获得焦点 而是留在后台 这可能吗 它只需要在 Google Chrome 上运行 它还可以使用 Google Chrome 扩展
  • Pandas:从多索引中的日期中选择

    假设我有 MultiIndex 系列 date foo 2006 01 01 1 12931926 310 3 11084049 460 5 10812205 359 7 9031510 239 9 5324054 903 2007 01
  • 使用 websockets 和 SocketIO 防止“心跳超时”

    我正在使用 NodeJS 和 SocketIO 作为我的 websocket 解决方案 它工作正常 但几分钟后 我的套接字服务器总是超时 并在控制台中显示以下消息 debug fired heartbeat timeout for clie
  • glReadPixels() 会消耗单个核心的所有CPU周期

    我有一个带有 OpenGL 窗口的 SDL2 应用程序 它表现良好 当它运行时 该应用程序与我的 60Hz 显示器同步 并且我看到该应用程序的 CPU 使用率为 12 到目前为止 一切都很好 但是 当我通过从深度缓冲区 绘制后 读取单个 深
  • 检查 list 是否包含任何其他列表

    我有一个这样的参数列表 public class parameter public string name get set public string paramtype get set public string source get s
  • 覆盖类路径中的默认 hadoop jar

    我已经看到了许多使用用户类路径作为 hadoop 的先例的方法的表现形式 通常情况下 如果 m r 作业需要特定版本的库 而 hadoop 恰好已经使用旧版本的库 例如 jackson 的 json 解析器或 commons http 等
  • 进行隧道事件的正确方法

    EDIT 我想我问了一些 XY 问题 我并不真正关心隧道事件的运行 我关心的是事件的发生从父窗口后面的代码引发由该窗口子级的控件拾取并做出反应 而无需明确告诉子级其父级是谁并手动订阅该事件 我试图在父控件中引发一个事件 并让子控件侦听该事件
  • 4点透视变换失败

    我一直在尝试进行 4 点透视变换 以便开始进行一些 OCR 操作 从下图开始我可以检测到车牌号 并将其裁剪出来 绿色框是边界框 红点是我想要正方形的矩形的角 这是变换的输出 乍一看 它似乎已经完成了由内而外的变换 将零件放在两侧而不是点之间
  • 如何使用 matplotlib 或 graphviz 在 networkx 中绘制多重图

    当我将多图 numpy 邻接矩阵传递给 networkx 时 使用 from numpy matrix 函数 然后尝试使用 matplotlib 绘制图形 它会忽略多条边 我怎样才能让它绘制多条边 Graphviz 在绘制平行边方面做得很好
  • 将附加 JPanel 添加到 JPanel

    伙计们 这是一个相当基本的问题 基本上我有这样的代码 public SuperPanel setLayout new BorderLayout add panel1 BorderLayout NORTH add panel2 BorderL
  • 文本小部件内的 Tkinter 检查按钮和滚动

    使用中找到的代码这个 stackoverflow 帖子 https stackoverflow com questions 5860675 variable size list of checkboxes in standard tkint
  • 是否可以刷新视图中的ViewBag值?

    我正在尝试做一个动态下拉列表 我从数据库中获取下拉列表的选项并将它们放入对象列表中 根据复选框值 我从列表中删除对象并将该列表设置为 ViewBag 值 public ActionResult ThematicManagement stri