Nanui 教程

最近接到一个项目 是关于构建一套 电脑端会员管理系统 但考虑到个人比较喜欢写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 教程的更多相关文章
- NanUI文档 - 开始使用NanUI
NanUI文档目录 NanUI简介 开始使用NanUI 打包并使用内嵌式的HTML/CSS/JS资源 使用网页来设计整个窗口 如何实现C#与Javascript相互掉用(待更新...) 如何处理Nan ...
- NanUI文档 - 打包并使用内嵌式的HTML/CSS/JS资源
NanUI文档目录 NanUI简介 开始使用NanUI 打包并使用内嵌式的HTML/CSS/JS资源 使用网页来设计整个窗口 如何实现C#与Javascript相互掉用(待更新...) 如何处理Nan ...
- .Net/.Net Core 的界面框架 NanUI 发布新版本啦!
发布前感悟 NanUI 自从上一次更新 NanUI 0.7 已经过去大半年,B站和头条的教学视频也只制作到了第二集. 有朋友悄悄问我是不是发生什么事故我删库跑路了所以那么长时间不更新项目不发布教程,当 ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- Angular2入门系列教程4-服务
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
- Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境
一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
随机推荐
- 20180613更新 leetcode刷题
最近就是忙工作项目 工作间隙就刷了刷LEETCODE 所以没啥更新 // 1111111.cpp: 定义控制台应用程序的入口点. // #include "stdafx.h" #i ...
- 解决linux ubuntu不能识别华为手机的问题--升级内核
敝人手中有一个华为mate8,但是debian, ubuntu及一系列衍生版均不能识别.只能识别出一个华为手机助手,但是无法使用华为的内置存贮. 在fedora上是可以完美使用的. 归根到底的原因,是 ...
- c#对dataset和list集合压缩和解压,能提高访问速度
public class YS { public static byte[] Decompress(byte[] data) { byte[] bData; MemoryStream ms = new ...
- 【jquery+easyUI】-- $.messager.show 弹框显示
三种基本弹框 1.提示框,一秒停留 $.messager.show({ title: '提示', msg: '修改成功!', showType: 'fade', //设置显示类型 style: { l ...
- sql心跳
因为interactive_timeout决定的是交互连接的时间长短,而wait_timeout决定的是非交互连接的时间长短. 问:为什么需要设置interactive_timeout wait_t ...
- python学习 day12 (3月18日)----(装饰器内置函数)
读时间函数: # import time # def func(): # start_time = time.time() # 代码运行之前的时间 # print('这是一个func函数') # ti ...
- rails 查看项目的所有路由
rails routes
- hdu-1255(线段树求面积并)模板
题目链接:传送门 思路: (1)建立线段的信息,每个线段存储l到r的线段的x位置和y的起始点与终点. 建立线段树的节点信息,每个节点代表一个区间的信息,x表示区间的横坐标的位置,l,r表示纵坐标的范围 ...
- Elastic serarch 安装
1.安装 1.1下载最新的 elasticsearch-6.5.4.tar.gz 1.2解压 tar -zxvf elasticsearch-6.5.4.tar.gz 1.3 创建用户 elastic ...
- Tomcat服务器的安装和配置
一.Tomcat下载 可以直接从Apache的网站上下载Tomcat(http://tomcat.apache.org/),进入首页后,在左边Download一栏可选择你要下载的版本,点击便可进入To ...