ASP .NET Razor
Razor 是一种标记语法可以让您将基于服务器的代码Visual Basic 和 C#嵌入到网页中。基于服务器的代码可以在网页传送给浏览器时创建动态 Web 内容。当一个网页被请求时服务器在返回页面给浏览器之前先执行页面中的基于服务器的代码。通过服务器的运行代码能执行复杂的任务比如进入数据库。Razor 是基于 ASP.NET 的是为创建 Web 应用程序而设计的。它具有传统 ASP.NET 的功能但更容易使用并且更容易学习。简单说前后端在一起。在web api的基础上多了网页。创建项目安装模版如果没有dotnet new install Furion.Template.RazorWithWebApi查看C:\Users\aarons.chendotnet new list Furion這些範本符合您的輸入: Furion範本名稱 簡短名稱 語言 標記---------------------------------------- ------------------ ---- ---------------------------------Furion Api furionapi [C#] Furion/WebApi/Api/RESTful/SwaggerFurion Razor With WebApi furionrazorapi [C#] Furion/Razor/Pages/WebApi/Api创建dotnet new furionrazorapi -n 你的项目名称打开运行用vs打开点运行这是自带的。编写你的代码节省时间先把web api写好代码参考Web API C# (Furion版带 单元测试-CSDN博客项目结构和之前的web api结构一样只是在web.entry中多了Pages文件夹里面就是放你显示的网页。以例子为例User是我新建的直接看原本的Index.cshtml和Index.cshtml.csIndex.cshtml 和 Index.cshtml.cs 是 Razor Pages 的“一对”文件一个负责显示前端一个负责逻辑后端。比如前端点击按钮就会执行后端的代码而这后端代码有可以直接执行 业务逻辑EmployeeService的代码这样就不用访问api了当然你也可以访问api的写法去做。编写页面新建一个user文件夹里面写一个indexIndex.cshtmlpage model FurionRazorApi.Web.Entry.Pages.User.IndexModel { } h1员工管理/h1 h3新增员工/h3 form methodpost asp-page-handlerAdd div classrow div classcol-md-3 input typetext nameNewEmployee.Name classform-control placeholder姓名 required / /div div classcol-md-2 input typenumber nameNewEmployee.Age classform-control placeholder年龄 / /div div classcol-md-3 input typetext nameNewEmployee.Dept classform-control placeholder部门 / /div div classcol-md-2 button typesubmit classbtn btn-success新增员工/button /div /div /form hr / !-- 按钮提交表单触发 OnPost -- form methodpost button typesubmit classbtn btn-primary加载所有员工/button /form !-- 只有点击按钮后才显示表格 -- if (Model.HasData) { if (Model.EmployeeList ! null Model.EmployeeList.Any()) // ← 改成 EmployeeList { table classtable table-bordered table-striped thead tr thID/th th姓名/th th年龄/th th部门/th /tr /thead tbody foreach (var item in Model.EmployeeList) // ← 改成 EmployeeList { tr tditem.Id/td tditem.Name/td tditem.Age/td tditem.Dept/td /tr } /tbody /table } else { p暂无员工数据/p } }Index.cshtml.csusing FurionRazorApi.Application; using FurionRazorApi.Core.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; namespace FurionRazorApi.Web.Entry.Pages.User { public class IndexModel : PageModel { private readonly IEmployeeService _employeeService; public ListEmployeeDto EmployeeList { get; set; } public string Message { get; set; } public bool HasData { get; set; } [BindProperty] public EmployeeDto NewEmployee { get; set; } public IndexModel(IEmployeeService employeeService) { _employeeService employeeService; } // 页面加载时显示空白 public void OnGet() { EmployeeList new ListEmployeeDto(); HasData false; Message 点击按钮加载员工数据; } // 点击按钮时加载所有员工 public async Task OnPost() { EmployeeList await _employeeService.GetEmoloyeesAsync(); HasData true; Message $共 {EmployeeList?.Count ?? 0} 名员工; } public async Task OnPostAdd() { if (string.IsNullOrWhiteSpace(NewEmployee?.Name)) { Message ❌ 员工姓名不能为空; EmployeeList await _employeeService.GetEmoloyeesAsync(); HasData true; return; } var success await _employeeService.CreateEmployeeAsync(NewEmployee); if (success!0) { Message $✅ 员工 {NewEmployee.Name} 添加成功; NewEmployee new EmployeeDto(); // 清空表单 } else { Message ❌ 添加失败; } EmployeeList await _employeeService.GetEmoloyeesAsync(); HasData true; } } }运行

相关新闻

AI开发中的测试驱动:TPDD方法构建稳定智能应用

AI开发中的测试驱动:TPDD方法构建稳定智能应用

1. 项目概述:从“盲盒”到“闭环”的必然演进在AI应用开发如火如荼的今天,一个普遍的现象是:很多团队正陷入一种我称之为“盲盒编程”的困境。你投入大量资源训练或微调了一个模型,精心设计了Prompt,满怀期待地部署上线…

2026/9/27 2:07:45 阅读更多 →
2026年B端抖音运营公司评测:制造企业如何筛选高转化代运营机构

2026年B端抖音运营公司评测:制造企业如何筛选高转化代运营机构

短视频生态持续迭代,抖音平台已经从娱乐流量阵地转向 B 端企业重要的营销获客渠道,内容、搜索、AI 算法的融合,重构了工业品企业线上拓客路径。越来越多机械设备、工程建设、工业耗材类企业将抖音企业号纳入数字化营销预算,但 B 端…

2026/10/4 13:18:53 阅读更多 →
2026年抖音企业号代运营公司评测:六家B2B短视频服务商选型参考

2026年抖音企业号代运营公司评测:六家B2B短视频服务商选型参考

在短视频与直播电商深度融合的2026年,抖音企业号已从“品牌展示窗口”演进为B端采购决策的关键入口。数据显示,超75%的制造企业已开通抖音企业号,其中逾半数因内部缺乏专业团队选择外包;但市场呈现明显两极分化——头部机构报价高…

2026/10/2 10:49:13 阅读更多 →

最新新闻

控制即推断:用变分推断与KL散度重构最优控制与MPC

控制即推断:用变分推断与KL散度重构最优控制与MPC

1. 从“控制”到“推断”:一个视角的转换第一次接触Control as Inference这个概念,是在啃一本强化学习的专著时。当时我正在做一个机械臂抓取的项目,用传统的MPC(模型预测控制)框架调参调得头大——代价函数里的权重稍…

2026/10/4 21:38:50 阅读更多 →
SAP S4 HANA COPA获利能力分析:从配置到月结实操指南

SAP S4 HANA COPA获利能力分析:从配置到月结实操指南

很多刚接触SAP ERP的朋友,尤其是一上来就面对SAP S4 HANA项目的人,经常会问同一个问题:FICO到底在学什么?COPA又是什么?为什么顾问嘴里动不动就蹦出一串事务代码,比如MD07、KO88、KE30,每个都像…

2026/10/4 21:38:50 阅读更多 →
ClawFeed的下一步:从AI信息摘要到Agent友好基础设施(MCP、Webhook与多渠道推送前瞻)

ClawFeed的下一步:从AI信息摘要到Agent友好基础设施(MCP、Webhook与多渠道推送前瞻)

ClawFeed的下一步:从AI信息摘要到Agent友好基础设施(MCP、Webhook与多渠道推送前瞻) 【免费下载链接】clawfeed ClawFeed — AI-powered news digest with structured summaries from Twitter/RSS feeds and web dashboard 项目地址: https…

2026/10/4 21:38:49 阅读更多 →
ARMxy工业控制器:重构PLC/网关/工控机三层架构

ARMxy工业控制器:重构PLC/网关/工控机三层架构

1. 为什么工业现场突然开始谈论“ARMxy”——它真能一口吞掉PLC、网关和工控机?最近在几个储能项目现场调试时,我连续三次被客户指着控制柜问:“你们这台小盒子,是不是把PLC、网关、工控机全干掉了?”——说的就是ARMx…

2026/10/4 21:38:49 阅读更多 →
OpenShell完全指南:替换Windows开始菜单,找回习惯的操作体验

OpenShell完全指南:替换Windows开始菜单,找回习惯的操作体验

重装系统后第一个要抢救回来的工具,对我来说不是浏览器也不是输入法,而是 OpenShell。这个免费开源项目从 Classic Shell 一路改名到 Open-Shell,目标始终没有变:把 Windows 系统里越来越难用的开始菜单,换成一套你自己…

2026/10/4 21:38:49 阅读更多 →
kordoc公文生成引擎:从Markdown一键生成HWPX,9种preset·表格·公式·图表全解

kordoc公文生成引擎:从Markdown一键生成HWPX,9种preset·表格·公式·图表全解

kordoc公文生成引擎:从Markdown一键生成HWPX,9种preset表格公式图表全解 【免费下载链接】kordoc 모두 파싱해버리겠다 — HWPHWPXPDFOffice 문서를 Markdown으로. 양식 자동 채우기와 신구대조를 갖춘 CLIMCP 서버 | Convert Korean documents (HWP, HW…

2026/10/4 21:37:48 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →