Razor:从aspx到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可测试,不知道如何实现,拭目以待。


本文转自火星人陈勇 51CTO博客,原文链接:http://blog.51cto.com/cheny/1100085


相关文章
|
PHP
在smarty模板中使用PHP函数的方法
sample1 复制代码 代码如下: 那如果使用像iconv这样的有三个参数的函数该怎么写呢?如果写成: sample 2 复制代码 代码如下: 一执行就会发现显示error信息。 因此研究一下就会发现,起始在smarty模板页的套用函数用法中,以smaple 1来说,trim的前面$Row->colname其实就是trim的第一个参数,中间用|这个符号串接; 那假设要使用像iconv有三个参数的函数的话,就要写成: sample 3 复制代码 代码如下: 也就是 函数第一个参数|函数:第二个参数:第三个参数。
1188 0
|
Web App开发 传感器 C#
|
.NET C# 开发框架
ASPX和Razor
ASPX   ASPX文件是微软的在服务器端运行的动态网页文件,通过IIS解析执行后可以得到动态页面,是微软推出的一种新的网络编程方法,而不是ASP的简单升级,因为它的编程方法和ASP有很大的不同,他是在服务器端靠服务器编译执行的程序代码,ASP 使用脚本语言,每次请求的时候,服务器调用脚本解析引擎来解析执行其中的程序代码,而ASP.NET则可以使用多种语言编写,而且是全编译执行的,比ASP 快,而且,不仅仅是快的问题,有很多优点。
1083 0
|
数据库 数据格式 JSON
用Razor做静态页面生成器
本来是用asp.net webpages做的博客网站,数据库用了一个陌生的本地数据库,只是觉得用起来很爽快,用新鲜的东西有一种刺激。后来数据库挂了,估计是存某个字段的时候出了问题,可是新鲜的东西,也不知道用什么工具可以查,只好怪自己太年轻。
1216 0