28

我认为微软必须有理由使用 RAZOR 语法来增强 ASP.Net。

在 Visual Studio 的Create New Website Project对话框中,还有另一个用于创建 ASP.Net (Razor) 的选项。我第一次遇到Razor这个词是在我读一本关于 Asp.Net MVC 的书时,我不知道它存在于 ASP.Net

在此处输入图像描述

我知道 MVC 3 中引入的 Razor 语法的用途。在问这个问题之前,我决定为 ASP.Net (Razor) 创建一个测试项目,看看它与普通的 ASP.Net webforms 和 ASP.Net 有何不同MVC。我发现没有像 MVC 中那样的 Model/View/Controllers 文件夹。

我发现母版页的指定方式不同,母版页更干净,没有更多<asp:ContentPlaceHolder />

但我的问题是:

  • 我注意到它使用了.cshtml,没有更多的代码隐藏了吗?
  • ASP.Net (Razor) 和 ASP.Net MVC 的异同
  • 它可以扩展为像 ASP.Net MVC 那样的功能,例如添加控制器?视图/模型,我猜自定义路由?
  • 当我们有 ASP.Net MVC 时,为什么会存在这种情况?这不会鼓励人们不愿意转向 ASP.Net MVC 吗?
  • 为什么你会选择 ASP.Net+Razor 而不是 ASP.Net MVC?

更新: 特别是 ASP.NET 网页旨在使已经了解 HTML 的人可以轻松地将服务器处理添加到他们的页面。对于学生、业余爱好者和一般不熟悉编程的人来说,这是一个不错的选择。对于具有非 ASP.NET Web 技术经验的开发人员来说,它也是一个不错的选择

更新 ASP.NET 网页ASP.NET 网页的目标用户是想要一个简单的 Web 开发故事的开发人员,类似于 PHP。在 Web Pages 模型中,您创建 HTML 页面,然后将基于服务器的代码添加到页面,以便动态控制该标记的呈现方式。Web Pages 专门设计为一个轻量级框架,对于了解 HTML 但可能没有广泛编程经验的人(例如,学生或业余爱好者)来说,它是最简单的 ASP.NET 入口点。对于了解 PHP 或类似框架的 Web 开发人员来说,这也是开始使用 ASP.NET 的好方法。

Asp.Net 网页

拜托,我需要你的技术意见。谢谢。

4

6 回答 6

21

这是一个很好的问题。首先,让我们来描述 Razor。

Razor 是一个解析服务器端代码并​​发出 Html 的引擎,就像 ASP.NET Web 表单一样,只是具有不同的并且可以说更精简和简洁的语法。

Razor v. Web 窗体边栏:在 ASP.NET Web 窗体中,您必须确定何时要使用“<%”开始编写服务器代码,然后当您完成编写服务器代码时,您需要使用“%>”来标识它。我喜欢 ASP.NET Web 窗体,但这很笨重。使用 Razor,您可以确定何时要使用 '@' 开始编写服务器代码,然后在下次开始编写服务器标记(以 '<' 开头)时,它会“确定”您已经完成了服务器代码。这是一种更简洁的方式来编写与一些服务器代码混合的 html。

ASP.NET Web Pages 是一个用于创建简单 Web 应用程序的框架。ASP.NET MVC 是一个使用模型-视图-控制器 (MVC) 模式使用 Web 窗体或 Razor 引擎创建 Web 应用程序的框架。ASP.NET Web 窗体是一个使用 Web 窗体呈现引擎创建 Web 应用程序的框架。

最终目标是根据正在构建的应用程序的复杂性提供选择。了解每一项有助于您为您的应用做出正确的选择。

附加链接:

于 2012-07-08T04:51:55.273 回答
20

在MVC模式中,M是Model,C是Controller,V是View。因此,很自然地,在 ASP.NET MVC 模型中,存在View Engine的概念。Razor 只是提供的视图引擎之一。开箱即用的另一种是“旧的”WebForms(顺便说一句,您也可以编写自己的视图引擎)。所以 Razor 没有代码隐藏的概念,代码隐藏在 WebForms 视图引擎边界内。

所以这有点说明了一切。Razor 处理 MVC 的 View 部分(如果您选择使用它而不是 WebForms 之一)。它与 M 或 C 无关。

就个人而言,如果您选择 ASP.NET MVC 模式,或者使用没有 MVC 的普通 WebForms,我肯定会选择 Razor View Engine,因为 Razor 的设计比 Webforms 更简洁,更易于使用。它也是最近的,所以它试图......只是更好:-)

附带说明一下,Razor Parser 也可以在ASP.NET MVC之外使用。它是在一个完全不依赖 MVC 或 Web 程序集的程序集中实现的。有关更多信息,请参见此处:http ://www.west-wind.com/weblog/posts/2010/Dec/27/Hosting-the-Razor-Engine-for-Templating-in-NonWeb-Applications

于 2012-07-15T14:25:34.767 回答
5

默认情况下没有代码隐藏,但您可以轻松地使您的 razor 文件继承自您的自定义类:

@inherits Index

进而

public class Index : WebViewPage { }

(更多信息在这里: http: //www.compiledthoughts.com/2011/01/aspnet-mvc3-creating-razor-view-engine.html

这更像是一种老式的 web 方式,更像 asp3。与 mvc 的不同之处在于,mvc 提供了一个庞大的框架来支持现实世界的应用程序(使用路由、控制器和操作,而不仅仅是“标记中的代码”)。

我认为它的存在是为了制作非常简单的东西,但我实际上并不知道......

最后,我总是选择 asp.net mvc with razor。

希望能帮助到你

于 2012-07-08T04:23:11.383 回答
2

好吧,你有两个选择:

  1. 使用 WebForms:开箱即用,准备使用服务器端控件(混合标记和业务代码)并使用母版页和皮肤,但面临这些便利所涉及的一些复杂性!:)

  2. 使用 MVC:或使用分离的设计模型,为您提供更有条理的代码库。你可以先做一个设计原型,或者先做一个业务代码,然后再构建另一个方面,相当容易。甚至你可以让设计师对他的工作有更多的控制权,让他/她有能力做他/她想做的一切。-> 这个是我的首选,因为它让我可以更好地控制我的代码,让我的代码更加简洁和干净。

如果您选择了 MVC 模式,那么您将面临另一种选择... 查看引擎

  1. 旧的 MVC 视图引擎:还不错,但有点冗长
  2. Razor Engine:它和#1 做的一样,为什么你不想使用它?!它没有取代任何 MVC 模式。它也更加简洁和容易,您既拥有 MVC 的强大功能,又拥有 Razor 引擎的简单性。Razor 是一种更智能的标记内语法,它可以帮助您专注于您的业务,而不是编写 "<%"s !通过使用 razor 语法,您将获得一个好处,MVC 的全部功能触手可及!

您还可以仅使用 razor(C# 或 VB)语法编写简单的 asp.net 网页。(就像 php 一样)

  • 我个人的选择是 MVC+Razor,最佳组合!
于 2014-05-14T09:37:08.347 回答
0
  1. MVC 中没有“代码隐藏”,期间。你所拥有的是控制器,它同时存在于 Razor 和非 Razor 中。
  2. 它们只是两种不同类型的标记。(见下一个答案)
  3. 它没有取代 MVC,它只是另一种选择。传统的标记非常冗长。Razor 语法简洁。
于 2012-07-08T04:23:53.770 回答
0

为了摆脱 webform、MVC、Razor、WebPages 和更多来自微软的混淆,我更喜欢 html-->javascript-->webapi。

于 2017-04-21T05:45:19.593 回答