很不容易,我在这两周为了数据库的课程设计第一次学习到了动态网页的开发。首先是尊重知识,也是为了知识不被忘记,在这里写下这第一篇博客。才疏学浅如果有什么理解错误,多包涵。

首先是环境的配置,我自己使用的是Visual Studio 2022版本,选择ASP.NET Web应用程序(.NET Framework),很遗憾,vs2022版本好像没有能够直接找到我要是使用的架构,所以需要点开ASP.NET和Web开发,加装以前版本。

装好后,选择ASP.NET Web应用程序(.NET Framework)语言是C#语言,选择MVC项目模板,额外选Web窗口,点击创建,需要的项目框架就创建好了。

进入项目后,我想第一件事需要做的应该是链接数据库。连接数据库的方法大概就是在顶部的工具,选择链接数据库,之后,默认数据库,服务器名字就是SQL Server连接时候的一串字符。服务器选好后,点击下方需要连接的数据库,这里你需要提前创建好你在这个项目里需要用到的数据库。测试连接好就可以了。之后在Model文件添加新建项,选择ADO.NET实体数据模型,之后创建连接,选择表选项,创建完成。

这样,先期工作差不多完成。

在我的理解里MVC模型大概是这样的。Controller作为核心控制器出现,里面可以调用相当多的函数如Index,Add等,而视图是作为给用户肉眼能够直观的在浏览器中看的界面出现的。当用户点击按钮或触发某种操作而执行某种函数时如Add(假设在Admin控制器里),那么就会在网页网址跳转到XXXX/Admin/Add,然后每个函数需要一个或者多个的视图(我是这样写的,都会有return View()),这个视图就是网址跳转后显示给用户的东西,大概这个逻辑。然后数据库在MVC模式中大概可以理解成为一个类,其中的属性是表,对于这个类的操作就是对于数据库的修改。

之后首先做的大概是登录界面,首先需要做的是添加一个控制器,在Controller那里加一个空的控制器就可以。我自己对于他的命名是LoginController,之后在controller端最开头写入using 数据库.Models(using 项目名称.Models),并public后写入private dormitoryEntities db = new dormitoryEntities()用来新建数据库的实例化对象。

随后是对于登录逻辑的编写,代码如下:

public ActionResult Index()
{
return View();    //返回Index的视图
}
//实现登录功能
[HttpPost]        //一定要注意这个[HttpPost] 这个是前端View向控制器返回数据的形式,声明利用的Post方式返回
public ActionResult Index(String username,String password)    //也是Index,是对于上个函数的重载
{
if(String.IsNullOrEmpty(username))
{
ViewBag.notice = "用户名不能为空";    //输出提示
return View();              //返回Index的视图
}
if(String.IsNullOrEmpty(password))
{
ViewBag.notice = "密码不能为空";
return View();
}
//数据库中查询用户
w_admin admin = db.w_admin.FirstOrDefault(p => p.username == username);   
  //在数据库中检所w_admin表中username列为username的元组,没有则返回为空,有则将元组进行返回至变量amdin中;
System.Web.HttpContext.Current.Session["result"] = admin.nickname;      //这一行代码是实现数据在控制器之间的传输,被其他控制器调用
if(admin==null)        //未查询到该用户
{
ViewBag.notice = "用户不存在";
}
else if(admin.password!= password)   //密码不正确
{
ViewBag.notice = "密码不正确";
}
else                     //密码正确
{
if (admin.power == 1)         //Sa用户权限跳转
//登陆成功,跳转到后端的管理界面
  return Redirect("/Sa/index");  //返回 导向至其他函数路径
else if (admin.power == 2)      //普通用户权限跳转
return Redirect("/Admin/Index");
}
return View();
}

这个是控制器端,虽然实现了登录的逻辑,但他还需要一个用户可以看到的前端视图用来给用户输入账号、密码,毕竟你不可能指望着用户给你写一个发数据包的脚本让你在后台审核权限对吧。那我们想要创建的前台的视图,首先应该点击侧栏的View在你的Login的文件夹下面添加一个视图。由于我比较菜,并没有学习过前端,审美又不太行,于是就找了个开源的网页的前端代码进行处理自己的登录界面。另外,如果有需要很多网页具有相同的基础视图,比如有个共同格式的边栏,那么可以选择在Views下面添加一个文件夹,在这个文件夹里添加视图。添加好之后想要使用这样的基础视图时,添加视图时,选择带有布局的MVC 5 视图页就可以。 而不需要时选择MVC 5 视图页就可以。

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<link rel="stylesheet" type="text/css" href="~/Content/assets/css/bootstrap-clearmin.min.css">
<link rel="stylesheet" type="text/css" href="~/Content/assets/css/roboto.css">
<link rel="stylesheet" type="text/css" href="~/Content/assets/css/font-awesome.min.css">
<title>宿舍管理系统</title>
<style></style>
</head>
<body class="cm-login"> <div class="text-center" style="padding:90px 0 30px 0;background:#fff;border-bottom:1px solid #ddd">
<h1>宿舍信息管理系统</h1>
</div> <div class="col-sm-6 col-md-4 col-lg-3" id="myForm" onsubmit="return checkForm()" style="margin:40px auto; float:none;">
<form method="post" action="/Logic/Index">  
      @*这里就是将下面直到</form>之间的input作为表单进行提交,提交方式是Post方式,提交给/Logic/Inde即Logic控制器下的Index函数中*@
<div class="col-xs-12">
<div class="form-group">
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-fw fa-user"></i></div>
<input type="text" name="username" maxlength="16" id="userName" class="form-control" placeholder="Username">
</div>
</div>
<div class="form-group">
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-fw fa-lock"></i></div>
<input type="password" name="password" maxlength="16" id="pwd" class="form-control" placeholder="Password">
</div>
</div>
</div>
<div class="col-xs-6">
<div class="checkbox"><label><input type="checkbox"> 记住密码</label></div>
</div><div class="col-xs-6">
<button type="submit" class="btn btn-block btn-primary"> 登录</button>
        @*这里是一个按钮,按钮类型为submit,即将表单提交上去*@
</div>
<h5 class="col-xs-12" id="notice" style="color:grey;">@ViewBag.notice</h5>
</form>
</div>
<script src="~/Scripts/jquery-3.4.1.min.js"></script>
<script>
function checkForm() {
var userName = $("#userName").val();
if (userName.length < 1) {
$("#notice").text("用户名不能为空");
return false;
}
else if (pwd < 1) {
$("#notice").text("密码不能为空");
return false;
}
}
</script>
</body>
</html>

在代码中有说明具体数据是怎样加入输入框并怎样提交(也不是很具体,只不过大概说明了一下用法);而script标签是一个功能函数,我没有使用它,想要使用使可以在form标签中加上onsubmit = "checkForm()" ,好像是这样。

这样大概就完成了登录界面,而在登录逻辑的控制器端可以看到登录后跳转到其他界面。

        

最后实现的是这样的界面。

ASP.NET MVC-动态网页开发-宿舍管理系统的更多相关文章

  1. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发4- 后台模板html页面创建

    上一篇教程<asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发>完成了本项目的登录模块,登录后就需要进入后台管理首页了,需要准备一个后台模 ...

  2. C# 动态生成word文档 [C#学习笔记3]关于Main(string[ ] args)中args命令行参数 实现DataTables搜索框查询结果高亮显示 二维码神器QRCoder Asp.net MVC 中 CodeFirst 开发模式实例

    C# 动态生成word文档 本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正. 在工程中引用word的动态库 在项目中,点击项目名称右键-- ...

  3. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发2-Model层建立

    上篇(asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作)文章讲解了开发过程中的准备工作,主要创建了项目数据库及项目,本文主要讲解项目M层的实现,M层这里 ...

  4. 在ASP.NET MVC应用中开发插件框架(中英对照)

    [原文] Developing a plugin framework in ASP.NET MVC with medium trust [译文] 在ASP.NET MVC应用中开发一个插件框架 I’v ...

  5. ASP.NET MVC动态加载数据

    ASP.NET MVC动态加载数据,一般的做法是使用$.each方法来循环产生tabel: 你可以在html时先写下非动态的部分:  Source Code 上图中,有一行代码: <tbody ...

  6. 基于ASP.NET MVC的快速开发平台,给你的开发一个加速度!

    基于ASP.NET MVC的快速开发平台,给你的开发一个加速度! bingo炸了 2017/4/6 11:07:21 阅读(37) 评论(0) 现在的人做事情都讲究效率,最好能达到事半功倍那种效果,软 ...

  7. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发

    进行本文之前需要在数据库用户表里面增加一条用户数据,直接手动添加即可,未安全考虑密码一定要使用Md5加密后的,这里提供666666的Md5密文为(c831b04de153469d),本文完成登录模块的 ...

  8. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作

    /****** Object: 新闻表 Script Date: 2017/9/2 星期六 15:11:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENT ...

  9. ASP.NET MVC动态生成网站菜单及子菜单

    在开发ASP.NET MVC网站时,Insus.NET想实现动态产生网站的主菜单及子菜单. 你需要在网站管理后台管理此2张表(Menu,SubMenu)的信息,添加,删除,编辑,更新等. Sequen ...

随机推荐

  1. python学习-Day22

    目录 今日内容详细 hashlib加密模块 什么是加密 加密算法 加密的使用 基本使用 指定算法(md5) 将明文数据传递给算法对象 获取加密之后的密文数据 加密补充 加盐处理 动态加盐 加密应用场景 ...

  2. Python学习-Day1(Typora软件与计算机)

    学习总括 Typora软件介绍(markdown语法) 相关拓展知识 文件的后缀名是什么? 什么是语言? 什么是编程语言? 什么是编程?(程序员写代码的本质) 计算机的五大组成部分 计算机的本质 计算 ...

  3. SpringData JPA接口总结

    1 JPA 1.1 整体概念 JPA:Java Persistence API,就是java持久化api,是SUN公司推出的一套基于ORM的规范. ORM呢:Object-Relational Map ...

  4. ThinkPHP信息泄露

    昨天遇到了一个ThinkPHP日志泄露,然后我就写了个脚本利用shodan搜索批量的来找一下漏洞,估计已经被人撸完了,不过还有一些网站有着此漏洞.ip收集和漏洞验证脚本工具我会放在最下面,需要的直接复 ...

  5. .NET混合开发解决方案14 WebView2的基本身份验证

    系列目录     [已更新最新开发文章,点击查看详细] WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NE ...

  6. Python模块 | EasyGui

    (Python模块 | EasyGui | 2021/04/08) 目录 什么是 EasyGUI? [EasyGui中的函数] msbox | 使用示例 ynbox | 使用示例 ccbox | 使用 ...

  7. 1903021121—刘明伟—Java第六周作业—java类

    项目   内容 课程班级博客链接  19信计班(本) 作业要求链接 第6周作业 扩展阅读 java面向对象的概念和定义 作业要求 每道题要有题目,代码,截图(只截运行结果). 题目1: 一个Phone ...

  8. 无线:WEP

    WEP是Wired Equivalent Privacy的简称,有线等效保密(WEP)协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络.不过密码分析学家已经找出 W ...

  9. springMvc和Hibernate集成实现用户添加

    源码:http://pan.baidu.com/s/1i4xVLE9(百度云) 步骤:一.创建数据库(mysql) 二.导入相应jar包(注意不同数据库jdbc.jar包)配置web.xml.spri ...

  10. 论文解读(AGE)《Adaptive Graph Encoder for Attributed Graph Embedding》

    论文信息 论文标题:Adaptive Graph Encoder for Attributed Graph Embedding论文作者:Gayan K. Kulatilleke, Marius Por ...