资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

篇(9)-Asp.Net Core入门实战-在页面中增加下拉框、复选框功能的增加和修改

入门实战-在页面中增加下拉框、复选框功能的增加和修改

成都创新互联专业为企业提供福山网站建设、福山做网站、福山网站设计、福山网站制作等企业网站建设、网页设计与制作、福山企业网站模板建站服务,10余年福山做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

一个标准的表单应用页面(视图),有很多元素,文本框只是有的多一些,还有复选框,下拉框,单选钮等各种元素,本节我将讲述使用asp.net core编程实现下拉框的操作和应用,演练代码还以Menu菜单管理有例,在视图内增加下拉框,复选框,实现数据的增加和编辑功能。可以通过枚举或者静态代码实现下拉框select选择,但本节讲解从数据库拉取数据填充下拉框。

1.增加下拉框:在Controller文件夹下的MenuController内,在Action中修改Create的方法代码增;在HttpGet类型的Create中初始化下拉框,在HttpPost类型的Create中获取下拉框值并保存,同时重置下拉框,否则,保存后,下拉框将会报错或只有默认的一项,除非你action到另外的页面。

(1).Action的修改。

(2).View的修改

(3).预览效果

2.修改下拉框:在MenuController文件内,修改Action视图Edit增加下拉框

(1).先修改一下Action,主要是下拉框的赋值并选中的问题

(2).View页面不用做任何修改,编辑时选中那一项,在HttpGet类型的Edit中,已经在生成绑定select的ViewData[“MenuDrop”]时设定,当对象的ParentId与表中存储的ParentId相等设置Selected=true;

(3).HttpPost类型的Edit是保存编辑后的值赋值保存即可;

以上对下拉框的操作只适应于一级菜单情况(就是单纯的一个类别字段),如果下拉框是二级菜单操作,需要用到级联操作。

3.二级级联下拉框的代码编写

原则上二级和以上的多级级联下拉框最好是多个表设计,例如省市区这种三个下拉框的选择,面向对象设计时,各自表单独设计在使用类对象时就方便一下,把字段设计到一个表中,那么使用Sql语句取值方便,但不符合Asp.Net Core 或者新的Web编程模式;下面演练下我实现的二级下拉框(编辑功能没有实现)

(1).在View视图中,修改Create.cshtml文件,在原来父菜单行位置,以如下方式添加2个DropDownList;

(2).在View视图中,Create.Cshtml文件中,增加Js代码,需要引用Jquery,注意js代码中的op.text=j.text和op.value=j.value的大小写,如下

(3).在Controller中的MenuController.cs文件中,修改action,和增加个方法,如下图

(4).最后预览效果

4.关于菜单管理功能的处理方式。

添加系统菜单的处理方式有这样一种处理方式,列表之上新建按钮[添加],用来实现增加根目录菜单,然后在每个子目录行上,添加一个Add 实现该菜单下的子菜单添加,如下图示:

这样处理逻辑清楚一些,正好避开了下拉框问题。当然还是要掌握下拉框的功能编码,以后的业务逻辑总是要遇到。

5.复选框的使用

在前面讲删除和查询的章节中,有批量删除的例子,里面的复选框使用都是在前台代码Js中实现操作。我们在菜单修改中,尝试增加复选框来。

(1).单一使用,在Menu管理的View视图的Create.cshtml中,增加一个复选框,因为对应Menu数据表的IsDisplay字段,为bool类型。

(2).执行Action保存数据是,获取到的值(如果选中,则是True,如果不选,则是False)

(3).在编辑页面(Edit.cshtml)视图中,从对象判断,如果是True,则是选中,如果是False,则是非选中,展现完数据后,你在进行编辑,Edit的Action的代码与Create中的类似,不在演练提出。

6.复选框另外一种用法代码编写。我贴出关键代码,在文章管理中会有详细的代码。

(1).在Create视图的代码片段

(2).在Edit时的代码片段


网页名称:篇(9)-Asp.Net Core入门实战-在页面中增加下拉框、复选框功能的增加和修改
网站链接:http://cdkjz.cn/article/dsopddd.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220