原因:类似于前边写的模板页,自己写了。还需要用replace来替换成自己想要的变量。。
常见的模板引擎:Razor、Nvelocity、Vtemplate。 Razor有VS自动提示,而且有助于学习asp.net mvc。(Nvelocity、Vtemplate自行学习)
1.Nvelocity。Vemplate 语法在C#中没有自动提示。但是用着非常方便的
2.借助于开源的RazorEngine,我们可以在非asp.net mvc项目中使用Razor引擎,甚至在控制台、WinForm项目中都可以使用Razor(自己开发代码生成器)
3.在非mvc项目中创建Razor文件(cshtml ,可以利用自动提示)的方法,新建一个html,改名为cshtml。(需要重新打开,才有智能提示)
4.Razor中@后面跟表达式表示在这个位置输出表达式的值,模板中Model为传递给模板的对象。
5.@{}中为C#代码,C#代码还可以和html代码混排
6.由于不是在MVC项目中,所以无法使用@Html.DropDownList、@Url.Encode()等。
RazorEngine(c#语言写的)是微软做的一个开源的模板引擎,不是简单的在asp.net MVC中用,其他地方也是可以使用的。
自己写个cshtml 步骤:
1。项目名字–右键—添加—新建–Razor.cshtml会有自动提示的。(推荐这种用法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <!DOCTYPE html> <html xmlns= "http://www.w3.org/1999/xhtml" > <head> <meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" /> <title></title> </head> <body> <ul> @{ for ( int i = 0; i < 10; i++) { <li>@i</li>; } } </ul> </body> </html> |
2。添加对RazorEngine的引用(1.放到项目的lib文件夹中,2.右键–引用–添加引用–浏览—打开该项目的lib文件,选择RazorEngine.dll文件即可!)
3。添加一般处理程序Razor1.ashx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | using RazorEngine; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; namespace Web2 { /// <summary> /// Razor 的摘要说明 /// </summary> public class Razor1 : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/html" ; //1。修改为html文本类型 //2.获取模板页的路径 string fullPath = context.Server.MapPath( "~/Razor.cshtml" ); //3.读取出模板页中的内容 string cshtml = File.ReadAllText(fullPath); //4.使用Razo的Parse方法转化为html文本信息 string html = Razor.Parse(cshtml); //5.输出到浏览器端 context.Response.Write(html); } public bool IsReusable { get { return false ; } } } } |
修改Razor也可以读取“类”中数据,“数据库中的字段”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | using RazorEngine; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; namespace Web2 { /// <summary> /// Razor 的摘要说明 /// </summary> public class Razor1 : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/html" ; //1。修改为html文本类型 //2.获取模板页的路径 string fullPath = context.Server.MapPath( "~/Razor.cshtml" ); //3.读取出模板页中的内容 string cshtml = File.ReadAllText(fullPath); /* //4.使用Razo的Parse方法转化为html文本信息 string html = Razor.Parse(cshtml); */ //拓展:怎么将变量传递到模板页cshtml中呢? //使用Razor的第二个方法 //假设从数据库中读取的变量 name, age /* int age = 9; string name = "rupeng"; //使用匿名类 //var model = new { Age=age,Name=name }; //string html = Razor.Parse(cshtml, model); //简化写 string html = Razor.Parse(cshtml, new { Age=age,Name=name}); */ Dog dog = new Dog(); dog.Id = 18; dog.Name = "哮天犬" ; string html = Razor.Parse(cshtml,dog); //5.输出到浏览器端 context.Response.Write(html); } public bool IsReusable { get { return false ; } } } public class Dog { public int Id{ get ; set ; } public string Name { get ; set ; } } } |
效果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现