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 ...
随机推荐
- 基于centos6.5 hadoop 伪分布式安装
步骤1:修改IP 地址和主机名: vi /etc/sysconfig/network-scripts/ifcfg-eth0 如果该文件打开为空白文件代表你计算机上的网卡文件不是这个名称“ifcfg-e ...
- BP神经网络在python下的自主搭建梳理
本实验使用mnist数据集完成手写数字识别的测试.识别正确率认为是95% 完整代码如下: #!/usr/bin/env python # coding: utf-8 # In[1]: import n ...
- 关于进行pdf的每页广告去除、转换word等方案。
pdf转word经常使用的是 软件下载安装破解完成以后进行编辑pdf,可以导出word,效果比一般的word自带的转换效果要好. 在进行pdf的每页去除页脚或者页眉的广告时候,使用pdf的替换功能.这 ...
- mysql之数据库的介绍和基本的增删改查
一 学前知识 什么叫做静态页面:用户传入内容后,不能处理用户的请求,只能单纯的显示主页面的信息. 什么是负载均衡:通过计算服务器的性能,将客户发送过来的请求指派给某台服务器.一般还要有一个备份的负载均 ...
- 796. Rotate String
class Solution { public: bool rotateString(string A, string B) { if(A.length()==B.length()&& ...
- ES6通过使用babel兼容到ie9
1.打开这个地址: https://unpkg.com/babel-standalone@6/babel.min.js 新建babel.min.js,把代码复制进去,然后在jq项目里引用. 2.在下面 ...
- Pappus一阶矩公式
- 程序员面试50题—sizeof的用法(6)
以下为Windows下的32 位C++程序,请计算sizeof 的值void Func ( char str[100] ){sizeof( str ) = ?}void *p = malloc( 10 ...
- base64编码理解
原文地址:http://www.ruanyifeng.com/blog/2008/06/base64.html 所谓Base64,就是说选出64个字符----小写字母a-z.大写字母A-Z.数字0-9 ...
- Linux下启动tomcat报错RROR org.apache.catalina.core.StandardContext- Error starting static Resources java.lang.IllegalArgumentException: Document base /home/duiba/apache-tomcat/webapps/../webapps/manager do
部署项目的时候,重启tomcat,死活起不来,很郁闷,网上巴拉了半天,结合自己的情况,找到了原因: 错误日志信息: 2018-12-13 13:52:26,992 [main] INFO org.ap ...