彩票自动投注软件定制-联灬系-\加/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. Netsharp下微信菜单以及OAuth

    一.OAuth介绍 在微信开发中,当打开一个页面是,业务场景一般会基于粉丝绑定用户信息,即页面需要基于粉丝和用户的身份处理业务逻辑. 在微信中打开一个页面有三个场景: 1.文本回复中直接包含url 2 ...

  2. 【Web】前端文件上传,带进度条

    最近做项目发现,在文件上传的过程中,增加进度条,能大大改善用户体验.本例介绍带进度条的文件上传 环境搭建 参考:[Java]JavaWeb文件上传和下载. 原生ajax上传带进度条 <%@ pa ...

  3. java JNI 实现原理 (二) Linux 下如何 load JNILibrary

    在博客java JNI (一)虚拟机中classloader的JNILibrary 中讨论了java中的Library 是由classloader 来load的,那我们来看看 classloader是 ...

  4. 用sql 生成2016年全年的日期

    select to_char(日期,'yyyy-mm-dd') from( select to_date('2016-01-01','yyyy-mm-dd') + level 日期 from dual ...

  5. Docker技术入门与实战(文摘)

    第一部分 基础入门 第1章 初识容器与Docker 第2章 核心概念与安装配置 第二部分 实战案例 第三部分 进阶技能 第四部分 开源项目

  6. 已经安装了客户端,但是cmd输入sqlcmd报错:Sqlcmd:Error:Connection failure.SQL Native Client is not installed correctly

    以前安装了sqlserver2008,没有卸载掉,后面又安装了sqlserver2014,所以系统环境变量中既有2008的环境变量的配置,又有2014的环境变量的配置,所以在终端输入sqlcmd时报错 ...

  7. 安装SourceTree遇到的一个个坑

    之前在公司的电脑上满心欢喜的安装了下,很顺利就成功了,回来在自己电脑上安装,结果坑不能停,以此来纪念下吧! 下载完成后,进行安装: 这里我是申请了个账户,选第一个user an existing ac ...

  8. 学以致用四----centos7.2 安装python3.6

    基础配置弄好后,开始搭建环境 本次的目的是安装 python 3.6 一.安装相关的依赖包 在之前的博客里有安装python3.6的步骤,为了避免做重复的步骤.需事先准备好依赖包 yum instal ...

  9. 在eclipse上搭建Roku开发环境

    环境:Oracle VM virtualBox+Ubuntu server 12.0.4.2 LTS+xfce+ Eclipse IDE for C/C++ Developers 4.3.2 参考:h ...

  10. WordPaster-dedecms5.7整合教程

    1.1. 与dedecms5.7整合 本教程中提到的插件文件可在官网的php-ckeditor3x示例中找到. 示例:http://www.ncmem.com/download/WordPaster2 ...