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

首先是环境的配置,我自己使用的是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. 【Azure 环境】使用Microsoft Graph PS SDK 登录到中国区Azure, 命令Connect-MgGraph -Environment China xxxxxxxxx 遇见登录错误

    问题描述 通过PowerShell 连接到Microsoft Graph 中国区Azure,一直出现AADSTS700016错误, 消息显示 the specific application was ...

  2. python学习-Day35

    目录 今日内容详细 代码创建进程 创建进程的方式 第一种创建进程的方式 创建进程的第二种方式 进程实现并发 join方法 进程间数据默认隔离 进程对象属性和方法 进程号如何查看 查看进程号的方法 杀死 ...

  3. 在jupyterlab中实现实时协同功能

    1 简介 当你在使用jupyter时,有没有想象过如果我们可以把正在编写代码的jupyter界面共享给其他人,使得别人可以在其他地方实时看到与你同步的jupyter界面,这样一来无论是与他人沟通代码逻 ...

  4. 【ACM程序设计】并查集

    并查集 并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题.一些常见的用途有:求连通子图.求最小生成树的Kruskal算法和求最近公共祖先( ...

  5. 分享我做Dotnet9博客网站时积累的一些资料

    从2019年使用WordPress搭建Dotnet9网站,到现在手撸代码开发,介绍中间使用的一些资源,绝无保留,希望对大家有用. 1. 申请域名.搭建WordPress网站 时间点:2019年11月 ...

  6. Svelte3.x网页聊天实例|svelte.js仿微信PC版聊天svelte-webchat

    基于Svelte3+SvelteKit+Sass仿微信Mac界面聊天实战项目SvelteWebChat. 基于svelte3+svelteKit+sass+mescroll.js+svelte-lay ...

  7. Spring Ioc源码分析系列--Ioc容器注册BeanPostProcessor后置处理器以及事件消息处理

    Spring Ioc源码分析系列--Ioc容器注册BeanPostProcessor后置处理器以及事件消息处理 前言 上一篇分析了BeanFactoryPostProcessor的作用,那么这一篇继续 ...

  8. 1.Spring开发环境搭建——intellj

    1.在intellj中新建项目,选择JDK版本(1.8版本) 2.选择相关信息填写,注意Java版本要和上面步骤选择的版本一致. 3.选择springBoot版本,勾选Spring Web选项. 4. ...

  9. python将test01文件夹中的文件剪切到test02文件夹中

    将test01文件夹中的文件剪切到test02文件夹中 import shutil import os def remove_file(old_path, new_path): print(old_p ...

  10. mybatis if判断等于某个字符串

    这种写法是错误的:在OGNL的表达式中,'true'会被解析成字符,因为java是强类型的 <if test="flag=='true' "> AND ho.id = ...