.net Core Web 保姆级教学 逐文件讲解 从0搭建一个 ASP.NET Core Razor Pages

我们可以把整个项目比喻成一家餐厅的运作体系


第一步:先看项目结构(以默认模板为例)

当你通过 Visual Studio 或 dotnet new webapp 命令创建一个新项目后,会看到类似下面的文件夹和文件(不同版本可能略有差异,但核心一致):

你的项目名称/ │ ├── 📁 Properties/ │ └── launchSettings.json (配置文件:启动按钮的设置) │ ├── 📁 wwwroot/ (餐厅的"公共用餐区":存放浏览器能直接访问的静态文件) │ ├── 📁 css/ (样式文件 - 餐厅的装修风格) │ ├── 📁 js/ (JavaScript文件 - 服务员的现场互动) │ └── 📁 lib/ (第三方库 - 比如借来的桌椅餐具) │ ├── 📁 Pages/ (餐厅的"核心包间区":所有网页都在这里) │ ├── 📁 Shared/ (公共组件:每个包间都有的墙壁、菜单样式) │ │ └── _Layout.cshtml (网页的"骨架":定义页眉、页脚、导航栏) │ │ └── _ValidationScriptsPartial.cshtml (脚本片段:用于表单验证) │ │ │ ├── Index.cshtml (首页:比如餐厅的入口大厅) │ ├── Index.cshtml.cs (首页的"专属服务员":处理首页的后台逻辑) │ ├── Privacy.cshtml (隐私政策页) │ └── Privacy.cshtml.cs (隐私页的专属服务员) │ ├── 📁 bin/ 和 📁 obj/ (厨房后厨:编译生成的临时文件和最终输出,一般不用管) │ ├── appsettings.json (餐厅的"规章制度手册":数据库连接、应用配置) ├── appsettings.Development.json (开发环境专用的规章制度) ├── Program.cs (餐厅的"总设计师+总指挥":应用的入口和启动配置) └── 项目名称.csproj (餐厅的"购物清单":项目依赖的包和SDK) 

第二步:详细讲解每个核心文件

1. Program.cs —— 餐厅的"总设计师+总指挥"

这是整个项目最先运行的地方,相当于你进入餐厅前,设计师画好蓝图、老板搭好骨架。

// 这是创建一个默认的Web应用构建器,相当于开始搭建餐厅var builder = WebApplication.CreateBuilder(args);// 告诉餐厅:我们使用Razor Pages模式营业// 这会在系统中注册所有必要的服务,比如把"页面文件(.cshtml)"和"服务员(.cshtml.cs)"关联起来 builder.Services.AddRazorPages();// 搭建完成,餐厅开始营业var app = builder.Build();// 配置HTTP请求管道:相当于设定客人进门后的路线if(!app.Environment.IsDevelopment()){ app.UseExceptionHandler("/Error");// 如果出错了,带客人去错误处理页面 app.UseHsts();// 强制使用HTTPS安全连接} app.UseHttpsRedirection();// 把所有HTTP请求自动跳转到HTTPS(更安全) app.UseStaticFiles();// 允许客人访问 wwwroot 文件夹里的静态文件(图片、CSS) app.UseRouting();// 启动路由系统:根据客人访问的URL,决定带他去哪个包间 app.MapRazorPages();// 关键步骤:把所有Razor Pages映射到路由中// 比如访问 "/Index" 就去找 Index.cshtml app.Run();// 餐厅开始正式营业,监听客人请求
2. Pages 文件夹 —— 餐厅的"核心包间区"

这里存放所有 .cshtml 文件,每个文件代表网站的一个具体页面

2.1 _Layout.cshtml (在Shared文件夹中) —— 网页的"骨架"

这个文件定义了所有页面的公共部分,比如:

  • 整个网站的头部(Logo、导航菜单)
  • 底部(版权信息)
  • 全局CSS和JS引用
<!DOCTYPEhtml><html><head><!-- 这里的 @RenderSection("Head", ...) 是个占位符 --><linkrel="stylesheet"href="~/css/site.css"/></head><body><header>这里是导航栏</header><!-- 最关键的部分:页面主体内容会渲染在这里 --> @RenderBody() <footer>版权所有</footer> @await RenderSectionAsync("Scripts", required: false) </body></html>

其他页面(如Index.cshtml)只负责写自己独有的内容,最终会被塞进 @RenderBody() 的位置。

2.2 Index.cshtmlIndex.cshtml.cs —— 一对一的"包间+服务员"

这是Razor Pages的精髓,一个页面由一对文件组成。

Index.cshtml.cs (页面模型/逻辑):处理页面的后台逻辑。

usingMicrosoft.AspNetCore.Mvc.RazorPages;publicclassIndexModel:PageModel// 继承PageModel{publicstring CurrentTime {get;set;}// 当用户通过GET方式访问页面时(比如直接在浏览器输入网址),这个方法会被执行publicvoidOnGet(){ CurrentTime = DateTime.Now.ToString();}// 当用户通过POST方式提交表单时,这个方法会被执行publicvoidOnPost(){ CurrentTime ="你刚刚点了提交按钮!";}}

这里要特别注意.cshtml.cs 文件的名字必须和 .cshtml 一样,并且放在同一个文件夹下。

Index.cshtml (视图/界面):就是你在浏览器里看到的HTML代码,可以混合C#代码。

@page // 第一行必须是@page,标记这是一个Razor Page @model IndexModel // 关联到下面的IndexModel类 <h1>欢迎</h1><p>当前时间是: @Model.CurrentTime</p><formmethod="post"><buttontype="submit">点我提交</button></form>
3. wwwroot 文件夹 —— 餐厅的"公共用餐区"

这是唯一一个浏览器可以直接访问的文件夹。存放:

  • css/site.css:整个网站的样式表(字体、颜色、布局)。
  • js/site.js:你自己写的JavaScript代码(弹窗、动画)。
  • lib/:第三方的库,比如jQuery、Bootstrap。
4. appsettings.json —— 餐厅的"规章制度手册"

存放配置信息,比如:

{"Logging":{...},// 日志记录级别(错误信息记多细)"ConnectionStrings":{"DefaultConnection":"数据库连接字符串"// 数据库地址和账号},"AllowedHosts":"*"// 允许哪些域名访问}
5. launchSettings.json (在Properties文件夹里) —— 调试模式的"开关面板"

当你按F5启动项目时,Visual Studio 会读这个文件。它定义了:

  • 用什么浏览器打开?
  • 打开哪个URL?(https://localhost:5001)
  • 是否自动打开窗口?

第三步:一次完整的请求流程(帮你串起来)

为了让你理解这些文件如何协同工作,我们模拟一次访问首页的过程:

  1. 启动:你按F5,Program.cs 开始运行,配置好所有服务。
  2. 请求:你在浏览器输入 https://localhost:5001/
  3. 路由app.MapRazorPages() 根据URL / 找到 Pages/Index.cshtml 文件。
  4. 执行逻辑:系统自动创建 IndexModel 类的实例(Index.cshtml.cs),并执行其中的 OnGet() 方法。
  5. 渲染页面:系统读取 _Layout.cshtml 作为骨架,把 Index.cshtml 生成的HTML内容填进 @RenderBody() 的位置。
  6. 返回:最终生成一个完整的HTML页面,返回给浏览器。
  7. 浏览器显示:浏览器解析HTML,并根据 wwwroot/css/site.css 的样式,把页面渲染得漂漂亮亮。

Read more

万方AIGC检测通不过?这几款降AI工具实测有效

万方AIGC检测通不过?这几款降AI工具实测有效

万方AIGC检测通不过?这几款降AI工具实测有效 TL;DR:万方AIGC检测算法与知网、维普不同,需要选择支持万方平台的降AI工具。推荐嘎嘎降AI(多平台适配,4.8元/千字)和率降(稳定可靠,4.2元/千字)。 万方检测的特殊性 很多同学以为降AI工具都是通用的,用一个就能搞定所有平台。但实际上,知网、维普、万方三大平台的AIGC检测算法各有不同。我之前用一款只针对知网优化的工具处理论文,知网检测降到了8%,但万方一测还有32%,差点没过学校的检测线。 万方的AIGC检测更侧重于文本特征分析,对某些AI生成模式的识别与知网有差异。所以如果你学校用的是万方检测,一定要确认工具是否支持万方平台,别只看知网的效果数据。 支持万方的降AI工具对比 工具价格(千字)万方效果达标率特色链接嘎嘎降AI4.8元60%→8%99.26%多平台适配官网率降4.2元65%→12%97%稳定可靠官网去AIGC3.5元70%→18%96%通用型官网比话降AI8元知网专精99%

By Ne0inhk

模型裁缝店:用Llama Factory为你的业务量身定制AI助手

模型裁缝店:用Llama Factory为你的业务量身定制AI助手 想象一下,一家律师事务所希望拥有一个能理解"诉讼时效""不当得利"等专业术语的AI助手,但现成的通用模型总把"举证责任"解释成"举重训练"。这种场景下,Llama Factory就像一家模型裁缝店,能帮你把基础大语言模型(如LLaMA、Qwen等)改造成精通法律、医疗等垂直领域的专业助手。本文将手把手教你如何用这个开源工具完成领域适配。 这类任务通常需要GPU环境,目前ZEEKLOG算力平台提供了包含该镜像的预置环境,可快速部署验证。不过无论使用哪种硬件资源,核心操作逻辑都是相通的。 为什么需要Llama Factory? 通用大模型虽然知识面广,但在专业领域常出现三类问题: * 术语误解:将"留置权"理解为"留置物品的权利" * 回答笼统:对"

By Ne0inhk

AI绘画趋势前瞻:NewBie-image-Exp0.1开源模型+弹性GPU部署实践

AI绘画趋势前瞻:NewBie-image-Exp0.1开源模型+弹性GPU部署实践 1. 为什么NewBie-image-Exp0.1值得关注 最近刷到不少朋友在问:现在做动漫图像生成,到底该选哪个开源模型?不是参数太大跑不动,就是效果太糊不敢发。而NewBie-image-Exp0.1的出现,像是一把刚好卡在“能跑”和“能打”之间的钥匙——它不追求参数堆叠的虚名,而是实打实地把3.5B规模的动漫生成能力,塞进一块16GB显存就能稳稳撑住的容器里。 这不是一个需要你花半天配环境、改报错、下权重、调精度的“半成品”。它已经把所有容易卡住新手的环节都提前踩过坑:浮点索引报错修好了,维度对不上问题解决了,数据类型冲突也一并处理完毕。你打开镜像,cd两下,python run一下,第一张图就出来了。没有“请先安装xxx”,没有“找不到模块xxx”,也没有“CUDA版本不匹配”的红色报错。 更关键的是,它没把“易用性”和“控制力”对立起来。

By Ne0inhk
拒绝无效内耗!大学生论文AI写作工具优选,省时又能保学术严谨性

拒绝无效内耗!大学生论文AI写作工具优选,省时又能保学术严谨性

拒绝无效内耗,选对 AI 论文工具,既能大幅节省时间,又能守住学术严谨性。以下是专为大学生筛选的高适配、强合规、易上手的优选工具,覆盖全流程写作需求。 一、中文论文全能首选(全流程 + 强合规) 1. PaperRed(★★★★★) 核心定位:中文论文全流程闭环,降重 + 降 AIGC 双天花板,学生性价比之王。 * 核心优势 * 全流程覆盖:选题(10 秒出 10 个方案)→ 大纲 → 初稿 → 文献综述 → 格式排版 → 查重 → AIGC 检测 → 降重一站式完成。 * 学术严谨:内置 3 亿 + 中英文学术资源,引用带真实 DOI 可追溯;自动适配 GB/T 7714-2015

By Ne0inhk