使用 Entity Framework 框架快速开发 MVC模式 ASP.NET Framework 可操作数据库的动态网站 并 部署

news/2024/5/9 20:58:20/文章来源:https://blog.csdn.net/weixin_46356548/article/details/122365953

使用Entity Framework框架快速开发MVC模式的ASP.NET动态网页 并部署

零、成果展示

以下是本人用该开发方法完成的展示诗词的网站,及微信公众号
https://shici.colazxk.xyz/
采用身份验证及角色权限控制,普通用户可以查看诗词
在这里插入图片描述
管理员用户可以增删改查
在这里插入图片描述
在这里插入图片描述
公众号可以实现查询数据库,自动回复消息功能。
在这里插入图片描述

一、开发准备

①安装Visual Studio

安装时注意勾选“ASP.NET和Web开发”
在这里插入图片描述

②安装SQL Server

在这里插入图片描述
选择“基本”即可安装。
安装完成后,还需安装Microsoft SQL Server Management Studio,才能实现可视化操作。
在此不赘述具体安装过程。

二、开始开发

①新建项目

创建新项目,选择“ASP.NET Web应用程序(.NET Framework)
在这里插入图片描述
设置项目名称、位置,框架可选择“.NET Framework 4.7”。选择“MVC”,选择身份验证为“个人用户账户”。
在这里插入图片描述
在这里插入图片描述

创建完成
在这里插入图片描述

②添加数据模型

添加DbModel以操作数据库

在解决方案资源管理器中,右击“Models”文件夹,选择“添加”→“类”
在这里插入图片描述
修改名称,点击“添加”。
需要继承DbContext。如出现错误,可将鼠标移至错误处,点击“显示可能的修补程序”,点击“using System.Data.Entity;”。
在这里插入图片描述
编写代码
DbModel.cs:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;namespace WebMVC.Models
{public class DbModel:DbContext{public DbModel() : base("name=MyMVCConnectionSQL"){}public System.Data.Entity.DbSet<WebMVC.Models.Student> Students { get; set; }}
}

再添加一个Student
Student.cs

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;namespace WebMVC.Models
{public class Student{[Key][Display(Name = "学号")][Required(ErrorMessage = "这是必须项")][StringLength(12, ErrorMessage = "最多12字符," +"至少8字符", MinimumLength = 8)][DataType(DataType.Text)]public string Sno { get; set; }[Display(Name = "姓名")][DataType(DataType.Text)]public string Sname { get; set; }}
}

在该类中定义Student表的字段
[Key]表示主键
[Display(Name = “学号”)]为在网页中显示的名称
[Required]表明此为必填项,可以使用ErrorMessage向用户输出提示信息
[StringLength]可以指明该字段需求的字符长度
[DataType(DataType.Text)]表明该字段的数据类型
public string Sno { get; set; }表明数据表中的字段名

同时在Web.Config文件的 <connectionStrings>节中添加:

<add name="MyMVCConnectionSQL" connectionString="Data Source=.;Initial Catalog=MyMVC;Integrated Security=True;MultipleActiveResultSets=true;"providerName="System.Data.SqlClient" />

也可将默认创建的用于身份验证的数据库的连接字符串修改

<add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=aspnet-Account;Integrated Security=True"providerName="System.Data.SqlClient" />

DbModel和Web.Config添加的name需要相同,Initial Catalog为数据库的名称
这样就完成了和数据库连接、操作的模型。

③添加控制器及视图

在解决方案资源管理器中,右击“Controllers”文件夹,选择“添加”→“新搭建基架的项目”,选择“包含视图的MVC5控制器(使用Entity Framework)”,点击“添加”。
在这里插入图片描述
在“模型类”中选择Student模型Student(WebMVC.Models),在“数据上下文类”中选择DbModel模型DbModel(WebMVC.Models),点击“添加”。
在这里插入图片描述
如果出现错误,可在解决方案资源管理器中,右击项目名称,选择“生成”,再次尝试添加。
在这里插入图片描述
此时,StudentsController控制器添加完成,且自动创建好了视图。

④在_Layout.cshtml中为新添加的视图添加链接

修改Shared中的_Layout.cshtml中,在页首菜单中,为新添加的视图添加链接

<li>@Html.ActionLink("学生信息", "Index", "Students")</li>

上面代码的ActionLink第一个参数为菜单名称,第二个参数为视图的cshtml文件的名称,第三个参数为视图所在的文件夹名称。

⑤运行项目

运行时,首次打开学生信息页面,会自动在SQL server的默认目录下创建数据库(当然也可以先在自己想要的位置手动创建好)。
在这里插入图片描述
即可进行账号注册、登录,实现简单的增删改查操作
默认的密码要求比较高,需要至少6位,包含大写字母、小写字母、数字、特殊符号,缺一不可。密码在数据库中使用Hash存储,也保证了安全性。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这样即是一个简单的学生信息管理系统,可以在此基础上完善,实现更加丰富的功能。

⑤完善

精心设计数据库字段

自己编写Linq to SQL语句

采用Linq to SQL技术,和传统的拼接字符串形成SQL语句不同,可以有效防止SQL注入的发生。
根据id查询数据:

db.Poetrys.Find(id)

查询单条数据:

db.Students.Single(r => r.Sno == sno)

将数据降序排序:

db.Students.OrderByDescending(x=>x.Sno).ToList()

精确匹配数据(Where):

db.Poetrys.Where(r => r.Location == location).ToList()

模糊匹配数据(Contains):

db.Poetrys.Where(r => r.Name.Contains(search) || r.Dynasty.Contains(search) || r.Poet.Contains(search) || r.Cont.Contains(search)).ToList()

插入数据,写入数据库

db.Students.Add(student);
db.SaveChanges();

修改数据,写入数据库

db.Entry(student).State = EntityState.Modified;
db.SaveChanges();

删除数据,写入数据库

db.Students.Remove(student);
db.SaveChanges();

自己编写视图及控制器代码

视图为cshtml,可以编写任意的html代码及script,还可在语句前加入@,即可编写C#代码
可以使用ViewBag在控制器和视图间传递数据,还是比较方便的,ViewBag.后的变量名可以自己定义,保证控制器和视图的变量名相同即可完成数据传递。
如:
在控制器中有代码:

ViewBag.Last = db.Poetrys.Find(id - 1)?.Name;

在视图中有代码:

@Html.ActionLink("上一篇", "Details", new { id = Model.Id - 1 }, new { @title = ViewBag.Last })

这样即可在视图上显示出ViewBag.Last的内容。

身份验证及权限控制

在控制器的方法前加入**[Authorize]**,即表明该功能需要登录才能访问,或直接加到类名前面,表明整个类的功能都需要登录才能访问
在这里插入图片描述
还可使用Roles属性定义角色名,表明只能由该角色访问。
在这里插入图片描述
在视图中也可进行权限控制

                @{if (Request.IsAuthenticated && HttpContext.Current.User.IsInRole("Admin")){@Html.ActionLink("编辑|", "Edit", new { id = item.Id })@Html.ActionLink("删除", "Delete", new { id = item.Id })}}

Request.IsAuthenticated && HttpContext.Current.User.IsInRole(“Admin”)判断用户是否已认证,角色是否是Admin,符合条件,才额外显示编辑、删除的选项。
那么如何定义角色呢?
在自动生成的aspnet-Account表中有AspNetUsers表和AspNetRoles表,可以手动在数据库中将AspNetUsers表的id绑定到AspNetRoles表中
如用户表的Id为e4fd03e1-5c61-4102-a84a-bd99811a68da,则在角色表中添加一条相同Id的记录,并设定角色名
在这里插入图片描述
在这里插入图片描述
当然这只是初步的操作方式,后续需要实现更复杂的权限管理的功能,可以使用代码操作这个数据库。

利用bootstrap美化前端界面

项目中已经自动包含了bootstrap,可以查阅bootstrap相关文档美化前端界面。
使用该方式,只需要在原来的基础上,仿照格式编写相关代码,对初学者来说还是非常友好的。

三、部署

可购买阿里云、腾讯云等服务器在远端部署,或在本地的服务器中部署。
云服务器需要注意在安全组设置中是否开放了相关端口。
域名解析、备案,获取SSL证书等,可以查阅云服务器、域名提供商提供的文档,在此不再赘述。
在这里插入图片描述
本人使用Windows Server+IIS,Linux如何部署可以查阅其他资料。

①复制文件到服务器

可以使用Visual Studio的发布功能(当然也可以直接将编译后的文件复制到服务器上)。
在这里插入图片描述

②配置IIS

打开服务器管理器,选择“添加角色和功能”,勾选“Web服务器(IIS)”,注意勾选“应用程序开发”中的“ASP.NET 4.7”,“管理工具”中的“IIS管理控制台”。
在这里插入图片描述
在IIS管理器中添加网站,绑定端口。
在这里插入图片描述

③配置数据库

同样的,也需要在服务器中安装SQL Server,将数据库复制到服务器上
在这里插入图片描述
此时即可打开网站,尝试访问。
因为环境的不同,可能会遇到许多不同的问题,需要根据错误提示排查。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_800202.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【B/S】IIS的配置以及发布网站

前言 在评教准备这几个阶段&#xff0c;我还真是接触了不少的东西。其中就让我提前接触了IIS网站发布的过程&#xff0c;在牛腩发布系统中应该也有讲解&#xff0c;可是自己进度还没有进行到那里&#xff0c;自己还是先总结一下吧&#xff01; 话说自己在专业课的时候自己也学过…

企业网站上线后该做哪些工作?

企业网站上线后该做哪些工作&#xff1f; 1、网页标题撰写 网站上线后&#xff0c;需要专业seo优化人员进行首页、栏目页、详情页标题撰写。标题中除了关键词外&#xff0c;还可加入广告语&#xff0c;当网站排名达到前20&#xff0c;营销广告语将有助于提升您的网站点击率。 2…

网站友链有用吗?怎么交换?注意事项?

网站友链有用吗&#xff1f;交换友链有什么意义&#xff1f; 很多高质量网站友情链接指向你&#xff0c;代表着他站对你的认可与推荐。例如&#xff0c;村里举行村长竞选&#xff0c;大家都投票推荐你&#xff0c;那么&#xff0c;你就更有权威。因此&#xff0c;网站适量增加高…

手机网站seo关键词排名优化影响因素?

手机网站seo关键词排名优化影响因素有哪些&#xff1f; 1、手机站不是一个独立的个体&#xff0c;手机和PC应该是相辅相成的 你做了一个电脑网站&#xff0c;匹配手机站&#xff0c;在搜索引擎看来&#xff0c;这是1个网站&#xff0c;而不是2个。一个拥有良好用户体验的站点&a…

玉米社:常见的网站测速方法有哪些?好操作

常见的网站测速方法有哪些&#xff1f;好操作 1、ping命令 点击&#xff1a;开始——运行——对话框中输入cmd——点击确定——输入ping www.你的网址.com——enter回车 &#xff08;win10系统同时按下windows键和R键&#xff0c;即可调出运行窗口&#xff09; 新手只需看最下面…

钉钉扫码登录第三方网站

一、在public/index.html引入钉钉js //需注意如果报错DDLogin未定义&#xff0c;需要将此代码放入head中或者body中&#xff0c;放在body-html标签之间有些项目会报错。 <script src"https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script&…

从维基百科等网站复制数据和公式到MathType里编辑

在我们写论文的时候&#xff0c;经常会需要用一些实际案例以及数据&#xff0c;而这些数据和案例有很大一部分可以直接在网络上找到。但是有时候也会发现我们想要的内容和公式&#xff0c;从网页上复制粘贴后太模糊&#xff0c;不适合打印和投影。就需要我们将网页上的公式进行…

在IDM上设置防止过度抓取网站信息

在使用Internet Download Manager&#xff08;IDM&#xff09;下载器时&#xff0c;有时会发现IDM自带的抓取功能过于强大&#xff0c;以至于有时会抓取一些无效的链接。那么&#xff0c;该如何避免IDM的过度抓取呢&#xff1f; 图1&#xff1a;IDM的下载任务界面 一、快捷键直…

网站优化策略之CDN加速

前言 「为啥咱们的网站访问那么慢」「网站加载这么慢客户都跑了」「能不能把咱们的网站加载速度提升下」 本文记录的内容「CDN」是解决上面问题的方法之一&#xff0c;也是技术难度&#xff0c;成本相对较低的一种方式。 「问题起源」 首先分析一下网站加载速度慢的原因&#…

有哪些网站是django开发的_商务网站开发有哪些优势?

随着互联网的不断发展&#xff0c;一些企业有了自己的推广网站&#xff0c;如一些农产品网站、一些加工网站、一些服装购买网站等。简而言之&#xff0c;现在有很多种网站&#xff0c;当然也有很多种类型的网站。今天我们要介绍一些商务网站的知识&#xff0c;比如商务网站开发…

python爬取网页数据 ajax_如何爬取通过ajax加载数据的网站

目前很多网站都使用ajax技术动态加载数据&#xff0c;和常规的网站不一样&#xff0c;数据时动态加载的&#xff0c;如果我们使用常规的方法爬取网页&#xff0c;得到的只是一堆html代码&#xff0c;没有任何的数据。 请看下面的代码&#xff1a; url https://www.toutiao.com…

flex 底部固定_小猿圈网站页面底部固定的方法

网络发展到了今天&#xff0c;很多朋友对于网站已经不陌生了&#xff0c;但是当我们看网页时你注意到网站的底部了吗&#xff1f;虽然很少人会注意到他&#xff0c;但是如果不在底部的话&#xff0c;会很难看&#xff0c;今天小猿圈web前端讲师就为你介绍网站页面底部固定的方法…

织梦分页php,织梦DedeCMS网站首页分页插件

织梦DEDECMS首页分页插件下载&#xff0c;一款主要运用用DEDECMS博客模板类的插件。实现首页分页功能。含GBK和UTF8双版本。 后台生成首页 温馨提示 如果你网站以下5个文件做过修改&#xff0c;使用前请备份这5个文件&#xff0c;不然安装插件后会被覆盖&#xff01;&#xff0…

linux mq客户端配置,客户端配置 - IBM MQ运维使用手册_服务器应用_Linux公社-Linux系统门户网站...

六、 客户端配置为方便对部署在linux上的MQ程序进行管理&#xff0c;可以通过在windows端添加远程远程队列管理器的方式进行图形化管理。以为QM1新建远程队列管理器进行图形化管理为例&#xff0c;步骤如下&#xff1a;1. 修改队列管理器QM1访问权限mqmmq:~> strmqm Q…

mac搭建网站服务器,Mac上搭建Web服务器--Apache

局域网搭建 Web 服务器测试环境,因为Mac OS X 自带了 Apache 和 PHP 环境&#xff0c;我们只需要简单的启动它就行了。1.命令&#xff1a;sudo apachectl startApache服务器默认的web根目录在&#xff1a;/Library/WebServer/DocumentsApache的配置文件在&#xff1a;/etc/apac…

java中间件开发 豆瓣_《大型网站系统与Java中间件》读书笔记(上)

前言只有光头才能变强。文本已收录至我的GitHub仓库&#xff0c;欢迎Star&#xff1a;https://github.com/ZhongFuCheng3y/3y这本书买了一段时间了&#xff0c;之前在杭州没带过去&#xff0c;现在读完第三章&#xff0c;来做做笔记豆瓣评分这本书前三章都在科普和回顾中间件/分…

seo自动工具_世界工厂网:星矿关键词库管理 助力企业获取SEO流量

互联网时代&#xff0c;得流量者得天下&#xff0c;这一直是企业线上业务的核心目标。特别是搜索引擎这一领域&#xff0c;是企业开展线上渠道的必争之地。想要抢占这部分流量&#xff0c;企业要做的第一步就是挖掘优质产品关键词搭建优化网站&#xff0c;占领流量高地。但如何…

摄影html网页模板,2017年最新15个漂亮的 HTML 摄影网站模板

摄影是一门艺术&#xff0c;它需要大量的耐心和努力工作来捕捉那些精彩的瞬间。如果你是一位热情的摄影师&#xff0c;想要建立一个网站来展示那些高质量的摄影作品&#xff0c;那么你找对地方了。本文包含15个最佳的摄影网站模板&#xff0c;你可以使用这些 HTML 模板创建自己…

网站设计

这几天和艺术学院的同学交流网站的设计&#xff0c;和各自做了几个作品&#xff0c;感觉和别人的确是存在不小的差距&#xff01; 学习&#xff01; 图一&#xff1a;自己设计的学员展板的简介 图二&#xff1a;李丽的作品 图四&#xff1a;程志伟的作品 图四&#xff1a;赵立文…

从今开始,让网站用Email地址登录

现今&#xff0c;很多Web2.0网站都使用Email地址作为登录用户名&#xff0c;其有如下优点&#xff1a; 1. 不易重复。用户名经常会重复&#xff0c;导致用户不得不在多个网站之间使用多种不同的用户名&#xff0c;不易记忆和管理&#xff1b;而Email地址具有唯一性。 2. …