彩票自动投注软件定制-联灬系-\加/Q;2943075966 黑/科/技问/世.详情直接添加咨询.信/誉/文本

最近接到一个项目 是关于构建一套 电脑端会员管理系统    但考虑到个人比较喜欢写Web    便首选Nanui构建项目。

中间遇到一些坑  但都已解决 ,便提供给大家参考。希望能帮助到大家-_-

项目采用 Nanui + LayuI + Echart + JQ   

Demo版: https://pan.baidu.com/s/1vAlagCswNu8PloKb9d5GzQ  密码   jbnb

完整项目源码还在优化中  ,过几天上传。

代码示例 及Ui 截图如下

开启调试-代码

base.LoadHandler.OnLoadStart += (sender, e) =>
{
  base.Chromium.ShowDevTools();
};

登录对应前台js

  form.on('submit(login)', function (d) {
  var str = my.Func_login("{\"Name\":\"" + d.field.account + "\",\"Pass\":\""+ d.field.pwd +"\"}");
  var result = eval('(' + str + ')');
  if (result.isSuccess == true) {
    layer.msg('登陆成功');
    setTimeout(function (){
      viewMain();
    },1000);
  } else {
    layer.msg('登陆失败,密码错误');
  }
后端代码

  var FuncLogin = myObject.AddFunction("Func_login");

  FuncLogin.Execute += (func, args) =>
  {
  var stringArgument = args.Arguments.FirstOrDefault(p => p.IsString);
  if (stringArgument != null)
  {
  var str = stringArgument.StringValue;
  JObject model = JObject.Parse(str);
  var name = model["Name"].ToString();
  var pass = model["Pass"].ToString();

  object result = null;

  var encry_pass = C_MD5.MD5Encrypt(pass);
  var user = adminUserBLL.CheckAdminUser(name,encry_pass);
  if (user!=null) {
  CurrentAdminUser.Id = user.Id;
  CurrentAdminUser.RoleId = user.RoleId.Value;
  result = new { isSuccess = true, msg = "登录成功" };
  }
  else {
  result = new { isSuccess = false, msg = "帐户名或密码错误" };
  }
  var resultStr = CfrV8Value.CreateString(Newtonsoft.Json.JsonConvert.SerializeObject(result));
  args.SetReturnValue(resultStr);
  }
  };

主窗体  LayUi+Iframe 

2后端调用前端 代码如下

  2.1//调用前端js 实现菜单栏权限渲染
  LoadHandler.OnLoadEnd += LoadMenu;

  /// <summary>
  /// 渲染角色对应的菜单
  /// </summary>
  private void LoadMenu(object sender, Chromium.Event.CfxOnLoadEndEventArgs e)
  {
    if (e.Frame.IsMain) {
    var menus = menuBLL.QueryMenusList();
    var res = JsonConvert.SerializeObject(new {data = menus });
    ExecuteJavascript("SetMenu(" + res+ ")");
    }
  }

  2.2 js代码

  function SetMenu(res) {

    console.log(res.data);

    var html = "";

    for (var i = 0; i < res.data.length; i++) {

    html += "<li class=\"layui-nav-item\" url=" + res.data[i].Url + "><a>" + res.data[i].Name+"</a></li>";
    }
    
$("#MenuBox").html(html);
  }

3前端与后端通信 代码如下

  3.1js代码

  var user = {
    page: 1,
    pageSize: 10,
    phone: $("#phone").val(),
    name: $("#name").val(),
    state: $(".layui-tab .layui-this").attr("lay-id")
  };
  var par = JSON.stringify(user);
  var list = parent.userbll.QueryList(par);
  var res = eval('(' + list + ')');

  3.2后端代码

  var userObject = GlobalObject.AddObject("userbll"); //新增用户BLL层  前端直接userbll.QueryList即可调用
  var userProp = userObject.AddDynamicProperty("user"); 
  InitProp(userProp);

  /*查询会员列表*/
  var QuertList = userObject.AddFunction("QueryList");
  QuertList.Execute += (func, args) =>
  {
    var stringArgument = args.Arguments.FirstOrDefault(p => p.IsString);
    if (stringArgument != null)
    {
    var str = stringArgument.StringValue;
    var user = userBLL.QuertList(str); //调用数据库方法 
    var resultStr = CfrV8Value.CreateString(JsonConvert.SerializeObject(new { data = user.Item1, count = user.Item2 }));
    args.SetReturnValue(resultStr);  
    }
  };

 用户管理

4 数据报表

Nanui 教程的更多相关文章

  1. NanUI文档 - 开始使用NanUI

    NanUI文档目录 NanUI简介 开始使用NanUI 打包并使用内嵌式的HTML/CSS/JS资源 使用网页来设计整个窗口 如何实现C#与Javascript相互掉用(待更新...) 如何处理Nan ...

  2. NanUI文档 - 打包并使用内嵌式的HTML/CSS/JS资源

    NanUI文档目录 NanUI简介 开始使用NanUI 打包并使用内嵌式的HTML/CSS/JS资源 使用网页来设计整个窗口 如何实现C#与Javascript相互掉用(待更新...) 如何处理Nan ...

  3. .Net/.Net Core 的界面框架 NanUI 发布新版本啦!

    发布前感悟 NanUI 自从上一次更新 NanUI 0.7 已经过去大半年,B站和头条的教学视频也只制作到了第二集. 有朋友悄悄问我是不是发生什么事故我删库跑路了所以那么长时间不更新项目不发布教程,当 ...

  4. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  5. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  6. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  7. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  8. Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境

    一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...

  9. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

随机推荐

  1. clean

    启动tomcat 报 Could not delete D:/online/.metadata/.plugins/org.eclipse.wst.server.core/tm  

  2. jquery plugin 之 form表单验证插件

    基于h5表单验证系统.扩展了对easyui组件的支持 先上图: 提示样式用到了伪对象的 {content: attr(xxx)}函数方法,实现提示信息能动态切换. 1.关键属性说明: type: 表单 ...

  3. SpringMVC学习笔记:单例与并发问题

    Spring中的Bean默认都是单例(singleton),Spring中Bean的scope属性有五种类型: singleton 表示在spring容器中的单例,通过spring容器获得该bean时 ...

  4. Python之内置函数一

    一:绝对值,abs i = abs(-123) print(i) # 打印结果 123 二:判断真假,all,与any 对于all # 每个元素都为真,才是True # 假,0,None," ...

  5. python之面向对象篇6

    一.继承与派生 什么是继承 继承一种新建类的方式,新建的类称为子类或者派生类,被继承的类称为父类或基类或超类 子类会遗传父类的一系列属性 python支持多继承 注意: 在python3中,如果没有显 ...

  6. 【转】python 2.6.6升级到python 2.7.x版本的方法

    1.下载python2.7.x wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz 2.解压并编译安装 tar -zxvf Py ...

  7. idea如何搭建springboot框架

    首先简单介绍下Spring Boot,来自度娘百科:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进 ...

  8. Liferay

    Liferay是一个开源公司,我们一般谈Liferay是指的Liferay Portal.Liferay Portal始创于2000年的洛杉机,当时是一个非营利性组织.于2004年建立Liferay公 ...

  9. linux yum 本地源配置

    1.查看硬盘情况 lsblk sr0就是光驱了 2.执行挂载命令 查看光驱cd /devls 执行命令 mount /dev/sr0  /mnt 将光驱挂载到 /mnt 目录 这样光驱就挂载好了 2. ...

  10. boost-使用format和lexical_cast实现数字和字符串之间的转换

    使用boost的format可以实现数字到string的格式化转换,boost的lexical_cast可以实现string到数值的转换,eg: #include "boost/format ...