MVC 使用cshtml的一些基础知识-和相关整理
首先在认识cshtml之前,先要了解一下Razor视图引擎
如果对此有疑问的话可以借鉴
博客园博文:http://kb.cnblogs.com/page/96883/ 或
博客博文:http://www.cnblogs.com/dengxinglin/p/3352078.html
上面都讲解了Razor 以及cshtml的使用语法
这里呢,我们只是整理一下大家熟悉的asp.net和cshtml之间容易出现错误的书写方法
从aspx转到chshtml还是有很多要适应的地方的,本帖是个人学习笔记帖不断更新。每天开着本帖编程。
按第一个有意义的编译错误的首字母排序,便于查找:
Cannot implicitly convert type 'void' to 'object'
错误:@Html.RenderPartial("_XXXX", Model);
正确:@{Html.RenderPartial("_XXXX", Model);}
其他:这个写法深刻表明了“<% xxx;%>”这样的代码变成了@{xxx;}。
不过感觉这个写法很丑,是否有更好的?
'object': type used in a using statement must be implicitly convertible to 'System.IDisposable'
错误:@using "...";
正确:@using ... ;(把引号去掉)
说明:可以这样理解,这里的东西除了多了个@之外,都和cs文件中的语法一样了。
The name 'i' does not exist in the current context
错误:
@{
<table>
for (int i = 0; i <= 15; i++)
{
<tr>
//这里用到了i
</tr>
}
</table>
}
正确:
<table>
@for (int i = 0; i <= 15; i++)
{
<tr>
//这里用到了i
</tr>
}
</table>
任何<>都将从C#语法变到html语法,而@{}则相反。
-----------------------------------------------------------------------------------------------
不好:(也能运行)
<td>
@foreach (var user in Roles.GetUsersInRole((string)ViewBag.OldRole))
{
<text>@user<br /></text>
}
</td>
好:
<td>
@foreach (var user in Roles.GetUsersInRole((string)ViewBag.OldRole))
{
@user<br />
}
</td>
说明:@除了能把语境从html变成cs,也能做相反的变化。这样代码的简洁性就好多了。
说明:本以为Razor想把“Html中镶嵌C#”变成"C#中镶嵌Html"(类似Helper),看来也不尽然。后者的好处是可以被测试,而前者不行。在推出Razor的时候官网曾经提到要让Razor可测试,不知道如何实现,拭目以待。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?