Vino.Core.Extensions.Layui

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

项目地址:https://github.com/kulend/Vino.Core.Extensions

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

使用方法

  1. 在Startup的ConfigureServices方法中
    //使用Layui
services.AddLayui();

  

  1. _ViewImports.cshtml文件中添加
@addTagHelper *, Vino.Core.Extensions.Layui

  

  1. 定义Model及其属性,例如:
public class DemoModel
{
/// <summary>
/// ID
/// </summary>
[DataType("hidden")]
public long Id { get; set; } /// <summary>
/// 名称
/// </summary>
[Required, MaxLength(20)]
[Display(Name = "名称")]
public string Name { get; set; } /// <summary>
/// 地址
/// </summary>
[MaxLength(256)]
[Display(Name = "链接")]
public string Url { get; set; } /// <summary>
/// 序号
/// </summary>
[Display(Name = "序号", Prompt ="0~9999")]
public int OrderIndex { 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
}

  

  1. 在form中使用@Html.InputFor,如
    @using (Html.BeginForm<DemoModel>("Save"))
{
@Html.InputFor(x => x.Id)
@Html.InputFor(x => x.Name)
@Html.InputFor(x => x.Url)
@Html.InputFor(x => x.OrderIndex)
@Html.InputFor(x => x.Switch)
@Html.InputFor(x => x.Date)
@Html.InputFor(x => x.Year)
@Html.InputFor(x => x.Month)
@Html.InputFor(x => x.Sex)
@Html.InputFor(x => x.Remark)
@Html.ActionsForSubmitAndReset()
}

  

  Ok, 是不是很简单?

  看下效果图:

  • 其他说明

    1. 设定字段类型是int或short,这input标签会添加input-length-num样式css,如果是字符串字段,设定MaxLengthAttribute,长度>=50,添加样式"input-length-long",如果长度20~50,添加样式"input-length-middle",如果长度小于20,则添加样式"input-length-short"。用户可在css文件中自定义文本框宽度。

    2. bool型字段默认会渲染成switch,lay-text需要这样设置:

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

      

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

    2. 关于Action按钮, 
      1). @Html.ActionsForSubmit(), 添加保存按钮(提交表单)。 
      2). @Html.ActionsForSubmitAndClose(), 添加保存和关闭按钮。 
      3). @Html.ActionsForSubmitAndReset(), 添加保存和重置按钮。 
      4). @Html.ActionsFor(btns), 添加自定义按钮,例如:

        @Html.ActionsFor(
    new SubmitButton(),
    new CloseButton(),
    new ResetButton { Text = "重置表单" },
    new ActionButton { Id = "btn_test", Text = "自定义按钮", Css = "btn-test", OnClick = "alert(1);" }
    )

        效果图:

    1. 修改全局默认配置
        //使用Layui
    services.AddLayui(opt => {
    opt.SubmitButtonText = "保 存"; //默认提交按钮文字
    opt.CloseButtonTest = "关 闭";//默认关闭按钮文字
    opt.ResetButtonText = "重 置";//默认重置表单按钮文字
    opt.CloseButtonOnClick = "closeWindow()";//默认关闭按钮OnClick事件
    });

      

    1. 关于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

.net core页面使用layui的HtmlHelper扩展的更多相关文章

  1. HtmlHelper扩展 及 页面编码化

    Html.Encode 新建Action,命名为HtmlEncodeDemo 将含有特殊字符的值传递给View视图 <%= ViewData["script"] %> ...

  2. .net mvc HtmlHelper扩展使用

    如果是你是从webform开始接触.net,你应该记得webform开发中,存在自定义控件这东西,它使得我们开发起来十分方便,如今mvc大势所趋,其实在mvc开发时,也存在自定义控件这么个东西,那就是 ...

  3. MVC HtmlHelper扩展——实现分页功能

    MVC HtmlHelper扩展类(PagingHelper) using System; using System.Collections.Generic; using System.Collect ...

  4. MVC 自定义Htmlhelper扩展

    在MVC中,我们不仅可以使用它原来的方法,我们还可以自定义,这不不仅加大了我们开发的效率,同时使界面更简洁. 具体什么是扩展方法,你可以这样理解,必须是静态且在形参中第一个参数是以this开头,大概先 ...

  5. ASP.NET MVC Razor HtmlHelper扩展和自定义控件

    先看示例代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using S ...

  6. HtmlHelper扩展

    扩展 HtmlHelper类 public static class MyHtmlHelper { //扩展方法 //静态类,静态方法,this关键字 //调用方法<%=Html.MyLabel ...

  7. [转]ASP.NET MVC HtmlHelper扩展之Calendar日期时间选择

    本文转自:http://blog.bossma.cn/asp_net_mvc/asp-net-mvc-htmlhelper-calendar-datetime-select/ 这里我们扩展HtmlHe ...

  8. asp.net MVC添加HtmlHelper扩展示例和用法

    一.先创建一个HtmlHelper的扩展类,代码: using System; using System.Collections.Generic; using System.Linq; using S ...

  9. MVC采用HtmlHelper扩展和Filter封装验证码的功能

    最近因为有个项目除了登录还有其他很多地方需要用到验证码的功能,所以想到了采用HtmlHelper和ActionFilter封装一个验证码的功能,以便能够重复调用.封装好以后调用很方便,只需在View中 ...

随机推荐

  1. 【Flask】 WTForm表单编程

    WTForm表单编程 在网页中,为了和用户进行信息交互总是不得不出现一些表单.flask设计了WTForm表单库来使flask可以更加简便地管理操作表单数据.WTForm中最重要的几个概念如下: Fo ...

  2. 【windows】 配置一个本地的tomcat服务器

    配置tomcat 公司的许多业务都是用java+tomcat模式的,做本地测试的时候经常要搭建一个自己的tomcat服务器.整个操作不难,但是记录一下,万一以后遇到什么问题也可以放这里. ■ 安装ja ...

  3. Algorithm --> 两个栈实现队列和两个队列实现栈

    两个栈实现队列和两个队列实现栈 队列(queue)先进先出的线性表:栈(stack)先进后出的线性表. 两个栈实现队列 法一思路: s1是入栈的,s2是出栈的. 入队列:直接压入s1即可: 出队列:如 ...

  4. Algorithm --> Kruskal算法和Prim算法

    最小生成树之Kruskal算法和Prim算法 Kruskal多用于稀疏图,prim多用于稠密图. 根据图的深度优先遍历和广度优先遍历,可以用最少的边连接所有的顶点,而且不会形成回路.这种连接所有顶点并 ...

  5. Linux下面如何用tcpdump抓包

    很多时候我们的系统部署在Linux系统上面,在一些情况下定位问题就需要查看各个系统之间发送数据报文是否正常,下面我就简单讲解一下如何使用tcpdump抓包 tcpdump是Linux下面的一个开源的抓 ...

  6. 实现Windows程序的数据的绑定

    1.创建DataSet对象 语法: DataSet  数据集对象  =new  DataSet("数据集的名称字符串"); 语法中的参数是数据集的名称字符串,可以有,也可以没有.如 ...

  7. C#编程语言之委托与事件(一)—— C/C++函数指针和C#委托初步

    相信正在学习C#的人都有学习过C或C++的经验,本文要讲的第一个要点是C#中的委托(delegate,有些资料也叫代表).什么是委托,很多人都能自然而然地想到C/C++中的函数指针,事实上很多书和资料 ...

  8. linux下各种解压方法

    linux下各种格式的压缩包的压缩.解压方法.但是部分方法我没有用到,也就不全,希望大家帮我补充,我将随时修改完善,谢谢!    .tar  解包:tar xvf FileName.tar  打包:t ...

  9. PTA 第二周作业 张乐

    题目1:整数的四则运算 1.实验代码 #include <stdio.h> int main() { int A,B; scanf("%d %d",&A,&am ...

  10. Beta冲刺合集

    Beta冲刺序列: Beta凡事预则立 :Beta No.0 Beta冲刺Day1:Beta No.1 Beta冲刺Day2:Beta No.2 Beta冲刺Day3:Beta No.3 Beta冲刺 ...