.net core使用Ku.Core.Extensions.Layui实现layui表单渲染

2024-01-11 02:10

本文主要是介绍.net core使用Ku.Core.Extensions.Layui实现layui表单渲染,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

演示网站地址:http://layui.kulend.com/
项目地址:https://github.com/kulend/Ku.Core.Extensions/tree/master/Ku.Core.Extensions.Layui

Demo代码:https://github.com/kulend/Ku.Core.Extensions/tree/master/Tests/Ku.Core.Extensions.Layui.Test


如果您的.net core 2.0项目使用layui来渲染表单,那么您可以尝试使用这个HtmlHelper扩展来帮你减少代码和工作量。

安装方法
PM> Install-Package Ku.Core.Extensions.Layui -Version 2.2.0.0
dotnet add package Ku.Core.Extensions.Layui --version 2.2.0.0

使用方法:
1.在Startup的ConfigureServices方法中

//使用Layui
services.AddLayui();

 

2._ViewImports.cshtml文件中添加

@addTagHelper *, Ku.Core.Extensions.Layui

 

3.定义Model及其属性,例如:

public class DemoModel
{/// <summary>/// ID/// </summary>[DataType("hidden")]public long Id { get; set; }/// <summary>/// 名称/// </summary>[Required, MaxLength(20), MinLength(5)][Display(Name = "名称", Description = "附加说明文字")][RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$", ErrorMessage = "输入的名称不符合规则")]public string Name { get; set; }/// <summary>/// 名称/// </summary>
    [Required][Display(Name = "手机号")][DataType(DataType.PhoneNumber)] //也可以为[DataType("mobile")]public string Mobile { get; set; }/// <summary>/// 链接/// </summary>[MaxLength(256)][Display(Name = "链接")][DataType(DataType.Url)]public string Url { get; set; }/// <summary>/// Email/// </summary>[MaxLength(256)][Display(Name = "Email")][DataType(DataType.EmailAddress)]public string Email { get; set; }/// <summary>/// 序号/// </summary>[Display(Name = "序号", Prompt ="0~9999")]public int OrderIndex { get; set; } = 0;/// <summary>/// 序号/// </summary>[Display(Name = "数字", Prompt = "0~9999")][Range(-1, 999.05)]public decimal Dec { get; set; } = 0;/// <summary>/// 开关/// </summary>[Display(Name = "开关", Prompt = "开|关")]public bool Switch { get; set; } = true;[Display(Name = "时间")][DisplayFormat(DataFormatString = "yyyy-MM-dd HH:mm:ss")] //定义显示格式[DataType(DataType.DateTime)] //也可以这样[DataType("datetime")]public DateTime? Date { set; get; }[Display(Name = "年份")][DataType("year")]public int Year { set; get; }[Display(Name = "月份")][DisplayFormat(DataFormatString = "现在是yyyy年MM月")][DataType("month")]public string Month { set; get; }/// <summary>/// 枚举/// </summary>[Display(Name = "性别")]public EmSex Sex { set; get; }/// <summary>/// 多行文本/// </summary>[Display(Name = "备注", Prompt = "请输入您的备注信息...")][MaxLength(500)][DataType(DataType.MultilineText)] //或者[DataType("textarea")]public string Remark { set; get; }
}/// <summary>
/// 性别
/// </summary>
public enum EmSex : short
{[Display(Name = "保密")]Secret = 0,[Display(Name = "")]Male = 1,[Display(Name = "")]Female = 2
}

 

4.在form中使用@Html.InputFor,如

            @using (Html.BeginForm<DemoModel>("#")){@Html.InputFor(x => x.Id)@Html.InputFor(x => x.Name, x => x.Mobile)@Html.InputFor(x => x.Url, x => x.Email)@Html.InputFor(x => x.OrderIndex, x => x.Dec)@Html.InputFor(x => x.Sex)@Html.InputFor(x => x.Switch, x => x.Date)@Html.InputFor(x => x.Year, x => x.Month)@Html.InputFor(x => x.Remark)@Html.ActionsForSubmitAndReset()}

或者使用@Html.ShowFor,如

            @using (Html.BeginForm<DemoModel>("#")){@Html.InputFor(x => x.Id)@Html.ShowFor(x => x.Name, x => x.Mobile)@Html.ShowFor(x => x.Url, x => x.Email)@Html.ShowFor(x => x.OrderIndex, x => x.Dec)@Html.ShowFor(x => x.Sex)@Html.ShowFor(x => x.Switch, x => x.Date)@Html.ShowFor(x => x.Year, x => x.Month)@Html.ShowFor(x => x.Remark)}

使用ShowFor需要在页面添加以下css代码:

<style>.layui-form-item .layui-form-label-show {float: left;display: block;padding: 9px 15px;font-weight: 400;text-align: left;color: #808080;}.layui-form-item .layui-input-block .layui-form-label-show {width: 85%;}
</style>

来个效果图:

 

show

怎么样,很简单吧。

通过设置字段的DataType和各种ValidationAttribute特性还可以完成表单数据验证,如:

[Required]:不能为空
[MaxLength]特性:最大长度验证 
[MinLength]特性:最小长度验证 
[StringLength]特性:最大和最小长度验证
[DataType(DataType.PhoneNumber)]或[DataType("mobile")]:手机号验证 
[DataType(DataType.Url)]:网址验证 
[DataType(DataType.EmailAddress)]或[DataType("email")]:Email验证 
字段类型为int:整数验证 
字段类型为decimal:数字验证 
[RegularExpression]特性:自定义正则表达式验证,如[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$", ErrorMessage = "输入的名称不符合规则")]

 

注意:表单验证功能需扩展layui的验证,可下载form.verify.js
https://github.com/kulend/Ku.Core.Extensions/blob/master/Tests/Ku.Core.Extensions.Layui.Test/wwwroot/js/form.verify.js

5.其他说明:
1)bool型字段默认会渲染成switch,lay-text需要这样设置:

[Display(Name = "开关", Prompt = "开|关")]

 

2)除了字段类型,很多时候需要DataTypeAttribute来判断渲染方式,默认为text,还可设置hidden,password,multilinetext,textarea,datetime,date,year,month,time等。multilinetext和textarea会渲染成Textarea。
3)关于Action按钮,

@Html.ActionsForSubmit(), 添加保存按钮(提交表单)。 
@Html.ActionsForSubmitAndClose(), 添加保存和关闭按钮。 
@Html.ActionsForSubmitAndReset(), 添加保存和重置按钮。 
@Html.ActionsFor(btns), 添加自定义按钮,例如:
@Html.ActionsFor(
new SubmitButton(),
new CloseButton(),
new ResetButton { Text = "重置表单" },
new ActionButton { Id = "btn_test", Text = "自定义按钮", Css = "btn-test", OnClick = "alert(1);" }
)

 

4)修改全局默认配置

//使用Layui
services.AddLayui(opt => {
opt.ActionsInFormItem = false;
opt.ActionTagTheme = "layui-btn-primary";
opt.ActionTagSize = "layui-btn-sm";
});

 

5)关于laydate组件,需要在页面添加以下js脚本:

layui.use(['laydate'], function () {var $ = layui.jquery, laydate = layui.laydate;$(".layui-input.laydate").each(function () {var self = $(this);var type = self.data("type") || 'date';var format = self.data("format") || 'yyyy-MM-dd';laydate.render({elem: self[0],type: type,format: format});});
});

 

项目在不断更新,如有bug或其他建议,可以提交issue。也可邮件给我:kulend@qq.com

转载于:https://www.cnblogs.com/kulend/p/9018160.html

这篇关于.net core使用Ku.Core.Extensions.Layui实现layui表单渲染的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/592808

相关文章

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4