zoukankan      html  css  js  c++  java
  • EasyMvc入门教程-高级控件说明(19)表单控件

    我们开发的系统,主要的一个功能就是采集界面数据,传回到服务器,比如:录入学生信息,这时候就需要表单。

    EasyMvc提供了如下界面控件,如下图所示:(控件+布局)

    EasyMvc实现了基于模型的绑定,model有数值的时候会自动绑定到控件上,具体代码如下:

    @{
        var data = new Person
        {
            UserName = "admin",
            Password = "111111",
            Sex = "男",
            Like = new List<string>() {"水果"},
            Birthday = DateTime.Now
        };
    }
    
    @using (Html.Q().Form(new FormModel { Name = "demo", Action = "/Home/GetTime", BeforeSubmitEvent = "BeforeSubmit", AjaxCallBack = "CallBack" }))
    {
        @Html.Q().StartRow(new RowModel() { ColSpace = EasyMvcHelper.ColSpace.Space10 })
    
        @Html.Q().Text().For(data, m => m.UserName).Label("姓名").Placeholder("请输入姓名").VerifyRequired().AuxWord("用户名必须唯一").ShowInline(true)
    
        @Html.Q().Text().For(data, m => m.Password).Label("密码").Placeholder("请输入密码").VerifyRequired().ShowInline(true).AsPassword()
    
        @Html.Q().Tree().Label("权限").SourceItems(Person.GetPermissions()).ShowCheckBox()
    
        @Html.Q().Switch().For(data, m => m.MainNotify).Label("开启通知?")
    
        @Html.Q().CheckBox().For(data, m => m.Like).Label("喜欢水果").SourceItems(data.GetLikes())
    
        @Html.Q().Radio().For(data, m => m.Sex).Label("性别").SourceItems(data.GetSexs())
    
        @Html.Q().SelectBox().For(data, m => m.SportLover).Label("体育爱好").SourceItems(data.GetLoves())
    
        @Html.Q().DateTime().For(data, m => m.Birthday).Label("出生年月").Text(DateTime.Now).ShowInline(true)
    
        @Html.Q().Upload().For(data, m => m.Identify).UploadSrc("/Home/UploadPost").SuccessCallBack("success").Label("上传身份证")
    
        @Html.Q().Upload().For(data, m => m.Logo).UploadSrc("/Home/UploadPost").SuccessCallBack("success").Label("上传Logo")
    
        @Html.Q().TextArea().For(data, m => m.Comment).Label("备注").Placeholder("请输入备注")
    
        @Html.Q().EndRow()
    
    
        @Html.Q().StartRow(new RowModel() { ColSpace = EasyMvcHelper.ColSpace.Space10 })
    
        @Html.Q().Button().Text(@Html.Q().Ico() + "立即提交").AsSubmit()
        @Html.Q().Button().Text("重置").AsReset()
    
        @Html.Q().EndRow()
    }
    

     注意:表单的几个配置参数:

    Action:处理表单的服务器Action函数。

    BeforeSubmitEvent:表单提交前调用自定义的JS函数,如果设置该函数,则函数需要返回true,表单才会进行后续的提交。

    AjaxCallBack:设置该参数后,表单将以Ajax进行提交。

    另外,如果Text支持多种客户端校验,如必填,手机号,数字,身份证,日期,网址,邮件等。

    最佳实践:

    1、如果需要进行服务端校验,可以在页面上放置一个专门显示校验结果的div,然后在AjaxCallBack里根据结果进行显示。

    2、如果要进行数据选择赋值,建议结合弹出框进行选择;即建议简单组合的方式实现。不建议专门封装一个很复杂的控件出来。

    3、如果不采用Model绑定的模式,可以给控件进行Name赋值,同样也可以进行数据采集与提交。即以下代码都可以实现数据采集提交:

    @Html.Q().Switch().For(data, m => m.MainNotify).Label("开启通知?")
    
    @Html.Q().Switch().Name("MainNotify").Label("开启通知?")
    

    总结:表单作为很重要的控件,需要多实践,尽量遵循简单+组合的方式满足实际需要。

    更多使用示例请浏览在线示例:http://core.zwc.cn

  • 相关阅读:
    洛谷 P1087 【FBI树】题解
    CF584D 【Dima and Lisa】题解
    洛谷 P1042 【乒乓球】题解
    洛谷 P2010 【回文日期】题解
    洛谷 P1233 【木棍加工】题解
    STM32嵌入式开发学习笔记(五):中断
    STM32嵌入式开发学习笔记(四):使用滴答计时器实现精准计时
    STM32嵌入式开发学习笔记(三):使用按键控制小灯
    STM32嵌入式开发学习笔记(二):将功能封装为库文件
    STM32嵌入式开发学习笔记(一)
  • 原文地址:https://www.cnblogs.com/chinasoft/p/8362038.html
Copyright © 2011-2022 走看看