ASP.NETMVC-简单例子-数据库查询+razor使用+项目发布

环境:
win10,SQL Server 2008 R2

参考:
asp.net mvc框架之EF的使用 - black娃 - 博客园
https://www.cnblogs.com/fjiqiang/p/11131365.html


目录

  • 数据库查询
    • 要求
    • 思路
    • 操作
  • razor使用
  • 项目发布
    • 要求
    • 实现

数据库查询

要求

从服务器的数据库中查询N条数据。

思路

  1. 使用NuGet安装EF(Entity Framework)
    在这里插入图片描述
  2. 参考上述链接,使用FluentAPI方式配置

操作

  1. 配置连接
    找到项目目录下的Web.config(不是Views文件夹下的),找到<connectionStrings>,在其中添加字符串,类似下面:
  <connectionStrings><add name="conn1" connectionString="data source=SqlServerIP;initial catalog=数据库名称;user id=用户名;password=密码;" providerName="System.Data.SqlClient"/></connectionStrings>

其中name是给数据库链接起的名字,后面会用到。
2. 在数据库上创建对应表,假设我的表叫enhancer,包含下面几列。
在这里插入图片描述
3. 在Models文件夹下创建文件Enhancer.cs,写一个跟表对应的类:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;namespace WebApplication1.Models
{[Table("dbo.enhancer")]public class Enhancer{public int id { get; set; }public string name { get; set; }public string seq { get; set; }public string descs { get; set; }public string notes { get; set; }public string refs { get; set; }}
}
  1. 创建DbContext类:这里用到了前面提到的、数据库连接的名称。
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Reflection;
using System.Web;namespace WebApplication1.Models
{public class MyDbContext:DbContext{public MyDbContext() : base("name=conn1") { }public DbSet<Enhancer> enhancers { get; set; }// 每操作一个表这里就要写一个DbSet<实体类>protected override void OnModelCreating(DbModelBuilder modelBuilder){base.OnModelCreating(modelBuilder);//从某个程序集中加载所有继承自EntityTypeConfiguration类到配置中modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());}}
}
  1. 创建实体类的配置类。每个实体类都要写一个配置类,所以我写了一个叫做DBConfig.cs的文件,里面每个配置类如下:
public class EnhancerConfig:EntityTypeConfiguration<Enhancer>
{public EnhancerConfig(){this.ToTable("dbo.enhancer");}
}

记得修改对应的实体类名称和表名。
6. 操作数据库
以上写好之后,可以在某个Controller下这样写:

public ActionResult Detail(string id) {using (MyDbContext db = new MyDbContext()) {var name = "CMV-enhancer";// 这里是查找名称相同的。如果要模糊查找,可以使用Contains// p => p.Name.Contains(keyword)var enhancers = db.enhancers.Where(s => s.name == name).ToList();foreach (var en in enhancers){// 在控制台打印信息System.Diagnostics.Trace.WriteLine(en.seq);}}return View();
}

razor使用

前面写过blazor,写出的razor是以razor结尾的文件,不过在ASP.NET MVC里,razor是以cshtml结尾的。虽然语法有一点差异,但是大部分代码可以直接从blazor项目中复制过来。

我在复制时修改的点是这些:

  • blazor里,页面里的变量是在@code{}里写的,变量可以私有可以共有;@code{}也一般放在razor最后。但是asp.net里,页面里的变量要写在@{}里,不写访问控制,并且要放在页面顶端(防止报未定义错误),如下图所示:
    在这里插入图片描述
  • asp.net的razor也是可以展示一个对象的信息。比如我自定义了一个类叫Vector,其中有一个私有变量是List<b>,那么需要在页面上先写@model WebApplication1.Models.Vector,使用时写@Model.变量,比如:
    <circle cx="@Model.Cx" cy="@Model.Cy" r="@Model.OuterRadius" fill="#ccc" stroke="#ccc" stroke-width="1" />
    
  • 如果需要后台向前端传递一个对象,后台要写return View(对象);
  • 另外,asp.net直接写js是可以的,不用像blazor那种注入服务,所以要把之前写的诸如@onclick改成onclick
  • 后台如果要向前台传递简单的变量(比如string、int),那可以用ViewBag。举例:
    后台:
    double r = 300;
    ViewBag.Result = r;
    ...
    return View()
    
    前台:
    <p>The result of the calculation is: @ViewBag.Result</p>
    
    也可以使用ViewData。
    后台:
    ViewData["SerializedObject"] = json;
    
    前台:
    <pre>@ViewData["SerializedObject"]</pre>
    

项目发布

要求

要求发布在云服务器上,上面部署了IIS和sql server。

实现

  1. win10远程连接云服务器
    win+R,再输入mstsc,输入ip、用户名,验证时输入密码即可。

  2. 发布文件
    项目名称上右键点击发布,然后选择文件夹。
    在这里插入图片描述
    在这里插入图片描述
    然后复制整个文件夹到服务器上适当位置。注意检查端口是否开放。

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

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

相关文章

干货分享 | 学会这7个工具方法,数字化转型规划不是难题

提到数字化转型&#xff0c;首要做的便是分析企业现有的业务流程和价值流&#xff0c;发现企业利润来源的关键点&#xff0c;进而有针对性的数字化转型。要实现传统业务向数字化业务的转变&#xff0c;制定出高效、灵活的业务流程优化策略显得至关重要&#xff0c;这样才能找到…

LED裸眼3D显示屏:开启视觉新体验

随着科技的不断进步&#xff0c;LED显示屏作为一种新型的显示技术&#xff0c;已经被广泛应用于各个领域。而其中&#xff0c;LED裸眼3D显示屏更是因其独特的技术原理和令人震撼的视觉效果&#xff0c;成为了业界关注的焦点。 裸眼3D显示屏是一种前沿的显示技术&#xff0c;它…

Java | Leetcode Java题解之第201题数字范围按位与

题目&#xff1a; 题解&#xff1a; class Solution {public int rangeBitwiseAnd(int m, int n) {while (m < n) {// 抹去最右边的 1n n & (n - 1);}return n;} }

获取当前操作系统的名称platform.system()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 获取当前操作系统的名称 platform.system() [太阳]选择题 在Python中&#xff0c;platform.system() 函数被用来获取什么信息&#xff1f; import platform print("【执行】platform.s…

05 threeJs基础---阵列立方体和相机适配体验立方体

1.增加相机视角fov 注&#xff1a; 范围更大&#xff0c;意味着可以看到渲染范围更大&#xff0c;远小近大的视觉效果更明显 fov:眼球张开的角度&#xff0c;0时相当于闭眼。aspect:可视区域横纵比。near:眼睛能看到的最近垂直距离。far&#xff1a;眼睛能看到的最远垂直距离。…

由于没有远程桌面授权服务器怎么办?

在现代的工作环境中&#xff0c;远程访问和远程桌面控制已经成为一项日益重要的需求。随着企业和组织的扩张&#xff0c;人们经常需要在不同的地点之间共享文件和应用程序。由于缺乏远程桌面授权服务器&#xff0c;这一过程可能会变得困难和不安全。 远程桌面授权服务器是一种…

day02-登录模块-主页鉴权

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.分析登录流程1.1传统思路是登录校验通过之后&#xff0c;直接调用接口&#xff0c;获取token之后&#xff0c;跳转到主页1.2vue-element-admin模板的登录思路&…

基于盲信号处理的声音分离-基于改进的信息最大化的ICA算法

基于信息最大化的ICA算法的主要依据是使输入端与输出端的互信息达到最大&#xff0c;且输出各个分量之间的相关性最小化&#xff0c;即输出各个分量之间互信息量最小化&#xff0c;其算法的系统框图如图所示。 基于信息最大化的ICA算法的主要依据是使输入端与输出端的互信息达到…

华侨大学24计算机考研数据速览,专硕22408复试线290分,学硕11408接收调剂!

华侨大学计算机专业创建于1980年&#xff0c;是福建省最早设立计算机专业的高校之一。1982年成立计算机系&#xff0c;2008年成立计算机科学与技术学院。根据“华侨大学计算机科学与技术学院网站”资料&#xff0c;该院有计算机科学与技术、软件工程、网络工程3个本科专业&…

git基本使用(二):git分支的操作命令

Git 的多分支管理是指在同一个仓库中创建和管理多个分支&#xff0c;每个分支可以独立开发&#xff0c;互不干扰。分支是 Git 中的一种强大功能&#xff0c;允许开发人员同时在多个不同的功能、修复或实验上工作&#xff0c;而不会影响主分支或其他分支。通过多分支管理&#x…

spring-boot-starter-json配置对象属性为空不显示

问题背景 在Spring Boot中使用spring-boot-starter-json&#xff08;通常是通过jackson实现的&#xff09;时&#xff0c;如果你希望在序列化对象时&#xff0c;如果某个属性为空&#xff0c;则不显示该属性&#xff0c;你可以使用JsonInclude注解来实现这一点。 pom.xml <…

Java对象集合按照指定元素顺序排序

需求背景 最近在对一个集合列表的数据进行排序&#xff0c;需求是要集合数据按照一个排序状态值进行排序&#xff0c;而这个状态值&#xff0c;不是按照从小到大这样的顺序排序的&#xff0c;而是要按照特定的顺序&#xff0c;比如按照1, 0, 2的顺序排的&#xff0c;所以需要自…

clickhouse count和uniqCombined

count(distinct ) 和 uniqCombined 获取去重后的总数。 去重&#xff1a;order by distinct argMax group by 哪个好&#xff1f;&#xff1f; clickhouse数据去重函数介绍&#xff08;count distinct&#xff09;_clickhouse distinct-CSDN博客

stm32-USART通信

什么是usart&#xff1f;和其他通信又有什么区别&#xff1f; 如下图&#xff1a; USART是一种用于串行通信的设备&#xff0c;可以在同步和异步模式下工作。 usart有两根数据线&#xff0c;一根发送线&#xff08;tx&#xff09;一根接收线&#xff08;rx&#xff09;&#x…

React Antd ProTable 如何设置类似于Excel的筛选框

React Antd ProTable 如何设置类似于Excel的筛选框 目标&#xff1a;在web页面的table表格中完成类似于EXCEL的Filter筛选功能。 示例图&#xff1a;点击标题列上方的漏斗状图标&#xff0c;即可对数据进行筛选。 ProTable 前景提要 ProTable API中有说明&#xff0c;是有…

解决所有终端中文输出乱码的问题

一、系统自带的cmd.exe 以及 Git的bash.exe、sh.exe、git-bash.exe和git-cmd.exe&#xff0c;和PowerShell默认使用“当前系统区域设置”设定好的936 (ANSI/OEM - 简体中文 GBK)语言编码。 1、[当前代码页] 的936 (ANSI/OEM - 简体中文 GBK) 是导致中文乱码的原因 在控制面板→…

网络抓包分析工具

摘要 随着网络技术的快速发展&#xff0c;网络数据的传输和处理变得日益复杂。网络抓包分析工具作为网络故障排查、性能优化以及安全审计的重要工具&#xff0c;对于提升网络管理的效率和准确性具有重要意义。本文旨在设计并实现一款高效、易用的网络抓包分析工具&#xff0c;…

期末测试一

字符数组的排序注意的问题 &#xff1a; 1.对于输入字符的时候 如果给出了要输入几个字符 n >>>>> for ( i 0 ; i < n ;i ) { scanf("%c",&ch); } 如果说直到输入到换行符结束 >>>>>>while ( ch! \ n ) 这个需要额…

CSS|04 复合选择器伪类选择器属性选择器美化超链接

基本选择器&#xff1a;见上篇基本选择器 复合选择器选择器1,选择器2{属性:值;} 多元素选择器&#xff0c;同时匹配选择器1和选择器2&#xff0c;多个选择器之间用逗号分隔举例&#xff1a; p,h1,h2{margin:0px;}E F{属性:值;} 后代元素选择器&#xff0c;匹配所有属于E元素后…

基于长短时记忆网络LSTM的TE过程故障诊断(MATLAB R2021B)

实验所用 TE 仿真过程的数据集是网上公开的数据集&#xff0c;该数据集中的训练集和测试集分别包含 20 种故障工况和一种正常工况数据&#xff0c;其中所采集的每个样本信号包含 41 个测量变量和 11 个控制变量&#xff0c;所以每个时刻采集到的样本有 52 个观测变量。 TE 仿真…