ABP进阶教程3 - 优化编辑
我们尝试在新增/编辑界面增加一个下拉框用来代替输入框编辑Status
添加实体
打开领域层(即JD.CRS.Core)的Entitys目录 //用以存放实体对象
添加一个类StatusCode.cs //状态信息
using System;
using System.Collections.Generic;
using System.Text; namespace JD.CRS.Entitys
{
public enum StatusCode : byte
{
Enabled = ,
Disabled =
}
}
更新模型
更新查询视图模型
打开展示层(即JD.CRS.Web.Mvc)的Models/Course/CourseListViewModel.cs //Course查询视图模型
新增GetStatusList方法 //获取状态列表
public StatusCode? Status { get; set; }
public List<SelectListItem> GetStatusList(ILocalizationManager localizationManager)
{
var list = new List<SelectListItem>
{
new SelectListItem
{
Text = localizationManager.GetString(CRSConsts.LocalizationSourceName, "PleaseSelect"),
Value = "",
Selected = Status == null
}
};
list.AddRange(Enum.GetValues(typeof(StatusCode))
.Cast<StatusCode>()
.Select(status =>
new SelectListItem
{
Text = localizationManager.GetString(CRSConsts.LocalizationSourceName, $"StatusCode_{status}"),
Value = status.ToString(),
Selected = status == Status
})
);
return list;
}
更新编辑视图模型
打开展示层(即JD.CRS.Web.Mvc)的Models/Course/EditCourseModalViewModel.cs //Course编辑视图模型
新增GetStatusList方法 //获取状态列表
public List<SelectListItem> GetStatusList(ILocalizationManager localizationManager)
{
var list = new List<SelectListItem>
{
}; list.AddRange(Enum.GetValues(typeof(StatusCode))
.Cast<StatusCode>()
.Select(status =>
new SelectListItem
{
Text = localizationManager.GetString(CRSConsts.LocalizationSourceName, $"StatusCode_{status}"),
Value = status.ToString(),
Selected = status == Status
})
); return list;
}
更新控制器
打开展示层(即JD.CRS.Web.Mvc)的Controllers/CourseController.cs //Course控制器
更新EditCourseModal方法 //向EditCourseModalViewModel传参数Status
public async Task<ActionResult> EditCourseModal(int courseId)
{
var course = await _courseAppService.Get(new EntityDto<int>(courseId));
var model = new EditCourseModalViewModel
{
Course = course,
Status = course.Status
};
return View("_EditCourseModal", model);
}
更新创建视图
打开展示层(即JD.CRS.Web.Mvc)的Views/Course/Index.cshtml //Course查询视图
添加下拉框Status //以替代输入框Status
<div class="row clearfix">
<div class="col-sm-12">
<div class="form-line">
<label class="form-label">@L("Status")</label>
@Html.DropDownListFor(
model => model.Status,
Model.GetStatusList(LocalizationManager),
new
{
@class = "form-control",
id = "Status"
})
@*<input name="Status" type="text" class="form-control" />*@
</div>
</div>
</div>
更新编辑视图
打开展示层(即JD.CRS.Web.Mvc)的Views/Course/_EditCourseModal.cshtml //Course编辑视图
添加下拉框Status //以替代输入框Status
<div class="row clearfix">
<div class="col-sm-12">
<div class="form-line">
<label class="form-label">@L("Status")</label>
@Html.DropDownListFor(
model => model.Status,
Model.GetStatusList(LocalizationManager),
new
{
@class = "form-control",
id = "Status"
})
@*<input name="Status" type="text" value="@Model.Course.Status" class="form-control" />*@
</div>
</div>
</div>
更新脚本
打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\Course\_EditCourseModal.js //用以存放Course编辑相关脚本
在初始化Form时给下拉框传值
//Initial form
_$modal.on('shown.bs.modal', function () {
_$form.find('input[type=text]:first').focus();//focus first input
_$status.val() = status;//Status value
});
预览效果
创建课程

编辑课程

ABP进阶教程3 - 优化编辑的更多相关文章
- ABP进阶教程0 - 目录
ABP进阶教程 本教程主要讲解如何基于ABP实现条件查询/分页/排序/导出/打印等功能. 源码已分享: GitHub Gitee ABP进阶教程0 - 目录 ABP进阶教程1 - 条件查询 A ...
- ABP进阶教程11 - 小结
点这里进入ABP进阶教程目录 效果预览 至此,ABP进阶教程的查询/分页/排序/导出/打印示例已完成,效果如下 登录 首页 办公室信息 院系信息 课程信息 教职员信息 学生信息 新增 修改 删除 查询 ...
- ABP进阶教程10 - PDF导出中文乱码
点这里进入ABP进阶教程目录 问题描述 功能按钮 - 导出PDF,中文信息导出为乱码. 解决方案 导出PDF是通过pdfmake.js实现的. 检查发现是pdfmake引用的vfs_fonts.js字 ...
- ABP进阶教程9 - CSV导出中文乱码
点这里进入ABP进阶教程目录 问题描述 功能按钮 - 导出CSV,中文信息导出为乱码. 解决方案 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\View ...
- ABP进阶教程8 - 自定义按钮
点这里进入ABP进阶教程目录 在功能按钮区增加一个自定义按钮 - Add(创建课程) 添加按钮 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views ...
- ABP进阶教程7 - 功能按钮
点这里进入ABP进阶教程目录 下载插件 打开Datatables官网(https://datatables.net/download/) 勾选Extensions/Buttons,下载插件,复制到JD ...
- ABP进阶教程6 - 布局配置
点这里进入ABP进阶教程目录 解读参数 l - length changing input control (左上,每页显示记录数) f - filtering input (右上,过滤条件) t - ...
- ABP进阶教程5 - 多语言配置
点这里进入ABP进阶教程目录 更新脚本 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\Course\Index.js //用以存放Cours ...
- ABP进阶教程4 - 分页排序
点这里进入ABP进阶教程目录 下载插件 打开Datatables官网(https://datatables.net/download/) 下载插件,复制到JD.CRS.Web.Mvc\wwwroot\ ...
随机推荐
- ubuntu18.10 上安装docker容器
网上有的安装步骤太复杂,并且安装过程中容易出错,其它安装不难,只需一条命令即可. 安装成功后,使用命令查看docker状态 systemctl status docker 安装前更新下包源 sudo ...
- CSS 让div,span等块级、非快级元素排列在同一行
让div,span等块级.非快级元素排列在同一行 by:授客 QQ:1033553122 例子:让两个div排列在同一行 给div添加float样式 <!DOCTYPE html> < ...
- HTML基础——表格的应用
一.表格标签 1.基本格式: 每个表格由 table 标签开始. 每个表格行由 tr 标签开始. 每个表格数据由 td 标签开始. 例如: <html> <head> < ...
- Node.js操作Mysql的简单示例
API的封装:封装为系统可用的工具,分为线上和线上的数据库. 使用:让API直接操作数据库,不再使用假数据. DEMO代码: const mysql = require('mysql'); // 创建 ...
- xip.io
gg gg "" "" ,gg, ,gg gg gg,gggg, gg ,ggggg, ""8b,dP" 88 I8P" ...
- 035.[转] 获取HttpServletRequest请求Body中的内容
注意: HttpServletRequest 请求中的 body 内容仅能调用 request.getInputStream(), request.getReader()和request.getPar ...
- 单词倒序(java)
如何将一串单词组成的字符串倒序呢?如:" we go to school" 变成"school to go we "java代码实现: public stati ...
- docker改变默认存储路径到数据盘(自己实践)
一.首先将数据盘格式化分区并挂载(文章中提到的sdb(腾讯云)实践中是vdb(阿里云),文章中挂载在ssd目录下,实践中是挂载到data目录下的,后面安装docker部分以后是实践中的记录,上面数据盘 ...
- Visual Studio Code管理MySQL
1. VS Code安装插件:MySQL , 安装完毕重新加载即可激活 2. 连接 mysql 3. 断开连接mysql 4. 简单操作 查看字段 新建查询语句 显示表结构 插入数据
- (入门SpringBoot)SpringBoot加接口操作日志好方法(九)
用Spring的切面去做,慕课网上的大神的小妙招,被我拷贝下来了.import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotati ...