但是,我从其他已经阅读的内容中收集到,Razor语法也可用于ASP.NET MVC 3,它似乎与ASP.NET网页几乎没有关系.
现在我是这个领域的新手,我现在正在WebMatrix学习,所以如果我弄错了一些细节,请纠正我,但我知道我也想开始学习ASP.NET MVC不久的将来,这些区别对于这种转变将是重要的.
所以我正在寻找一个明确的指南,这将使我能够准确理解我所学的哪些部分是Razor语法的一部分,哪些是ASP.NET“Web Pages”的一部分.
另外,我需要澄清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),以及剃刀文件的智能解析,以找出代码和标记之间的转换.其他所有内容都是标准C#代码(ifs和fors),标记或WebPages框架提供的库和实用程序.
现在,Razor和WebPages并没有完全分离,两者之间存在内置的连接和约定,使一切工作在一起.例如@section是一个Razor关键字. Razor解析器将其转换为调用WebPages框架方法DefineSection的代码,以便稍后在布局页面中调用@RenderSection.
在MVC中使用Razor取决于WebPages框架.具体来说,MVC扩展了代表WebPages页面的类,这样RenderSection之类的东西仍然可以在MVC中运行.唯一的区别是MVC有自己的一套实用程序和库,专为MVC编程范例而设计.例如,不是从WebPages调用Href方法,而是在MVC中调用Url.Content.
WebPages中的大量函数将继续在MVC中工作,尽管可能有更多mvc-ish方法可能需要调用.