Selector选择器在AspNetCore中的用法

news/2024/7/10 23:52:21 标签: jquery, json, 前端, javascript, c#, .net, .netcore

Selector选择器在AspNetCore中的用法

背景

项目编辑过程中会选择其所属的上级项目,而上级项目在数据结构中是以ParentID的方式表达,而非Project类型,用户不会记录也不应该记录ID值,因此应提供Selector项目下拉框供用户选择。

但是MVC的Razor页面绑定数据时绑定的时单个对象或者IEnumerate集合对象,因此,如果在页面上绑定项目列表则成为完成的难题。

绑定数据思路

首先声明一个Selector对象

<select name="cmdProjects" id="cmdProjects" class="form-control">
</select>

使用Ajax进行后台加载数据,

javascript">$.getJSON("@Url.Action("GetDDL_List", "Projects")"

上述指令为调用的后台函数为GetDDL_List,控制器为Projects,相当远转换为链接为

/Projects/GetDDL_List

整体javascript代码如下

javascript"> $(document).ready(function () {
        $("#cmdProjects").empty();
        $.getJSON("@Url.Action("GetDDL_List", "Projects")",
            function (data) {
                $.each(data, function (i, item) {
                    $("<option></option>").val(item["value"]).text(item["text"]).appendTo($("#cmdProjects"));
                });
    });

在Controller中获取数据

public async Task<JsonResult> GetDDL_List()
{
            List<Project>? list = await ProjectUtils.Instance.ToListAsync();
            List<SelectListItem> listitem = new List<SelectListItem>();
            foreach (var prj in list)
            {
                SelectListItem item = new SelectListItem()
                {
                    Text = prj.Name.ToString(),
                    Value = prj.ID.ToString()
                };
                listitem.Add(item);
            }
            return Json(listitem);
}

指定上级节点在选择器中的位置

javascript的.each方法中i变量表示索引,因此在.each之外定义临时变量index,然后在循环体内进行判断,最后将值赋值给选择器

javascript">$(document).ready(function () {
        ...
                $.each(data, function (i, item) {
                    ...
                    if(item["value"]==@Model.ParentID){
                        index = i;
                    }
                });
                $("option").eq(index).prop("selected", 'selected')
            });
    });

选项选中后触发的事件

javascript">$('#cmbProjects').on('change', function(){
    var selectedOption = $("#cmbProjects option:selected");
    $("#ParentID").val(selectedOption.val());
});

http://www.niftyadmin.cn/n/5007296.html

相关文章

Java程序员学vue3最好的方式就是搭建后台管理模板

前言 作为Java程序员&#xff0c;vue3还是有必要学的&#xff0c;毕竟是国内最受欢迎的前端JS框架&#xff0c;你现在接手的项目&#xff0c;前端部分几乎都会和vue沾边&#xff0c;尤其是中小企业。 vue3作为新的大版本&#xff0c;相较于vue2改动还是很多的&#xff0c;目前企…

【Linux】线程池读写锁

文章目录 线程池应用场景线程池原理构造线程池代码实现 读写锁应用场景读写锁的三种状态读写锁的接口初始化接口销毁接口以读模式加锁以写模式加锁解锁接口 常见问题 乐观锁/悲观锁乐观锁悲观锁自旋锁 线程池 应用场景 线程池不仅要提高程序运行效率&#xff0c;还要提高程序…

学妹学Java(一)

⭐简单说两句⭐ 作者&#xff1a;后端小知识 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; Hello&#xff0c;亲爱的各位友友们&#xff0c;好久不见&#xff0…

SpringBoot+Vue体育场馆预约管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码 一、项目演示 项目演示地址&#xff1a; 视频地址 二、项目介绍 项目描述&#xff1a;这是一个基于SpringBootVue框架开发的体育场馆预约管理系统。首先&#xff0c;这是一个前后端分离的项目&#xff0c;代码简…

数据结构与算法学习(day3)——快速排序

文章目录 前言复习冒泡排序时遇到的问题快速排序 前言 &#xff08;1&#xff09;在本章的学习此前&#xff0c;需要复习前一章的内容&#xff0c;动手敲一遍解题。上一章讲的是冒泡排序算法&#xff0c;我在回顾的时候重新敲了一遍重新&#xff0c;就发了一些问题&#xff0c;…

解锁前端Vue3宝藏级资料 第三章 Vue Router路由器的使用

Vue Router 是 Vue.js 的官方路由器。通过使用 Vue Router&#xff0c;你可以构建一个包含多个页面的应用程序。它可以样多个页面之间流畅地跳转&#xff0c;而无需每次移动到另一个页面时都要重新加载整个页面。Vue Router 路由是使用 Vue.js 构建单页应用项目的必备库。官网地…

吐槽记~(这个帖子是我的垃圾桶)~哈哈

我倒是要看看tamen到底有多少该吐槽的点。 ############################################################################# &#xff08;一&#xff09;令人窒息的业务&#xff08;初见&#xff09; 1-收到原始需求文档&#xff08;涉及前后端开发&#xff0c;涉及流程&a…

Nginx详解 五:反向代理

文章目录 1. 正向代理和反向代理1.1 正向代理概述1.1.1 什么是正向代理1.1.2 正向代理的作用1.1.3 正向代理的基本格式 1.2 反向代理概述1.2.1 什么是反向代理1.2.2 反向代理可实现的功能1.2.3 反向代理的可用模块 2. 配置反向代理2.1 反向代理配置参数2.1.1 proxy_pass2.1.2 其…