asp.net-mvc-3 - 需要帮助来区分 WebMatrix、ASP.NET 网页和 Razor 语法

标签 asp.net-mvc-3 razor webmatrix

新 Razor View 引擎的大部分文档都在 WebMatrix 和 ASP.NET“网页”的上下文中。即使在 MSDN 库本身中,这篇文章(对我来说)似乎是大多数 Razor 文档的根引用页(ASP.NET Web Pages with Razor Syntax)本质上与 ASP.NET 网页相关联,并且在文档的一个分支下标题为“Microsoft WebMatrix”的树。

但是我从我读过的其他内容中了解到,Razor 语法也可用于 ASP.NET MVC 3,这似乎与 ASP.NET 网页没有什么关系。

现在我是整个领域的新手,目前我正在学习 WebMatrix,所以如果我在某些细节上有错误,请指正我,但我知道我也想开始学习 ASP。 NET MVC 在不久的将来,因此做出这些区分对于这种转变很重要。

因此,我正在寻找权威指南,让我能够准确理解我正在学习的内容中哪些部分是 Razor 语法的一部分,哪些部分是 ASP.NET“网页”的一部分。

此外,我还需要澄清 WebMatrix 和 ASP.NET 网页之间是否存在任何区别。我知道 WebMatrix 是基于“网页”的,但不清楚我正在学习的某些内容是否专门是 WebMatrix 的一部分,或者如果(我怀疑)WebMatrix 只是围绕“网页”的 IDE,与除了 UI 之外,没有添加太多内容。

有人可以在这些方面提供一些清晰度吗?

(顺便说一句,我是不是遗漏了什么(其他),或者“网页”是他们可能为这个新系统想出的最令人困惑的名称?)

最佳答案

是的,ASP.NET WebPages 是一个容易混淆的名字。我们试过了,但想不出更好的办法。对不起:)

有关 MVC、Razor、WebMatrix 和 WebPages 之间各种交互的非常好的描述,请阅读 David Ebbo 的博客文章 How WebMatrix, Razor, ASP.NET Web Pages and MVC fit together .

Razor 语法几乎可以归结为 @ 符号、一些关键字(例如 @helper@inherits@section),以及对 razor 文件的智能解析,以找出代码和标记之间的转换。其他一切都是标准 C# 代码(iffor)、标记或 WebPages 框架提供的库和实用程序。

现在 Razor 和 WebPages 并没有完全分离,两者之间有内置的联系和约定,使一切都能协同工作。例如 @section 是一个 Razor 关键字。 Razor 解析器将其转换为调用 WebPages 框架方法 DefineSection 的代码,以便稍后在布局页面中调用 @RenderSection

Razor 在 MVC 中的使用依赖于 WebPages 框架。具体来说,MVC 扩展了表示来自 WebPages 的页面的类,这样 RenderSection 之类的东西仍然可以在 MVC 中工作。唯一的区别是 MVC 有自己的一组实用程序和库,这些实用程序和库是为 MVC 编程范例设计的。例如,不是从网页调用 Href 方法,而是在 MVC 中调用 Url.Content

WebPages 中的大量函数将继续在 MVC 中运行,尽管您可能希望调用更多类似 mvc 的方法。

关于asp.net-mvc-3 - 需要帮助来区分 WebMatrix、ASP.NET 网页和 Razor 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5123891/

相关文章:

asp.net - 如何使用在控制台应用程序中应用的 DisplayFormat DataFormatString 输出属性(理想情况下按字符串查询对象)?

asp.net-mvc - ASP.NET MVC 3 - 部分、显示模板与编辑器模板

c# - Linux 上带有单声道的 ServiceStack

asp.net-mvc-3 - 强制 ASP.NET MVC3 处理程序忽略 .cshtml 和 .vbhtml URL 并仅传递它们

asp.net-mvc-3 - css 不适用于标签

asp.net-mvc-3 - .NET MVC 3 以编程方式设置布局

c# - 如何获取 Razor View 引擎中集合中项目的元数据?

php - 无法使用 PHP 5.5 将数据添加到 webmatrix 3 中的 MySQL 5.7

c# - Razor 语法/WebMatrix - C#

c# - 使用ajax后返回同一 Controller 的另一个MVC3 View