2012-07-08 175 views
22

我认为微软必须有一个理由用RAZOR语法来增强ASP.Net。Asp.Net Webforms VS Asp.Net WebSite(Razor)VS Asp.Net MVC

关于创建新网站项目 visual studio的对话框中,还有另外一种创建ASP.Net(Razor)的选项。我第一次跨越术语剃刀来了,当我读了一本书上Asp.Net MVC,我不知道它的存在对ASP.Net

enter image description here

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

我发现母版页不同的规定和母版页是清洁的,没有更多的<asp:ContentPlaceHolder />

但我的问题是:

  • 我注意到它使用.cshtml,还有没有更多的codebehinds?
  • ASP.Net(Razor)和ASP.Net MVC
  • 之间的异同点可以扩展为ASP.Net MVC的功能,例如:添加控制器?查看/模型,自定义路由我猜?
  • 为什么当我们有ASP.Net MVC时就存在这个问题?这不会鼓励不愿意转向ASP.Net MVC吗?
  • 以及为什么要选择ASP.Net + Razor而不是ASP.Net MVC?

UPDATE:ASP.NET Web Pages in particular was designed,使其容易 人谁已经知道HTML服务器处理添加到自己的网页。 这对学生,业余爱好者,一般人来说是 新编程的不错选择。它也可以为开发商谁 有non-ASP.NET网络技术

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

Asp.Net Web Pages

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

回答

16

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

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

Razor v。Web Forms补充:在ASP.NET Web Forms中,您需要确定何时开始用'<%'编写服务器代码,然后在完成编写服务器代码时,需要用' %>”。我喜欢ASP.NET Web Forms,但这很笨拙。使用Razor,您可以确定何时开始使用'@'编写服务器代码,然后在下一次开始编写服务器标记(从'<'开始)时,它会“发现”您已完成服务器代码。这是一个更简洁的方式来编写与某些服务器代码混合的html。

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

最终目标是根据正在构建的应用程序的复杂程度提供选择。通过帮助你为你的应用程序做出正确的选择来理解每一个。

其它链接:

+1

你的解释很好。你提出了你的观点,但这还不够。那么在ASP.Net(Razor)_中使用Server Controls/UserControls呢? ASP.Net(Razor)项目几乎看起来像一个空的ASP.Net MVC项目。你能多快把它变成ASP.Net MVC? - 技术 – codingbiz 2012-07-08 05:43:24

+2

MVC中的并行用户控件有部分视图。在我看来,你不会转换/转换。只需重建。尽管您可以共享视图。 Web编程有两个部分,确定您将在页面上显示的内容(C#)并将其实际呈现在页面上。我无法在一篇文章中教你关于所有3的一切。对不起,说。更多信息请访问http://asp.net/mvc/mvc3 – 2012-07-08 05:46:27

+0

我们为什么要将服务器端代码与标记混合在一起,这将成为维护噩梦? – IrishChieftain 2012-07-08 08:34:39

3

有没有代码屁股默认,但你可以很容易使你的剃须刀文件从您的自定义类继承:

@inherits Index 

然后

public class Index : WebViewPage { } 

(点击此处了解详情:http://www.compiledthoughts.com/2011/01/aspnet-mvc3-creating-razor-view-engine.html

这更像是一种老式的网络做法,更像asp3。与mvc的区别在于,mvc提供了一个巨大的框架来支持真实世界的应用程序(使用路由,控制器和操作,而不仅仅是“标记中的代码”)。

我觉得它的存在作出的事情是很简单,但我真的不知道......

最后,我总是会选择asp.net的MVC剃刀。

希望它可以帮助

+0

我从你的答案(+1)中挑选了一些知识以获取有用的内容 – codingbiz 2012-07-08 05:46:32

+1

为什么投票下来? – ivowiblo 2012-07-08 06:57:08

0
  1. 没有 “代码屁股” 在MVC,期。你有什么是控制器,既存在剃刀又存在非剃刀。
  2. 它们只是两种不同类型的标记。 (查看下一个回答)
  3. 它不是取代MVC,它只是另一种选择。传统的标记非常冗长。 Razor语法简洁。
+1

您可以使用WebForms具有的相同策略来隐藏代码。 “Period” – ivowiblo 2012-07-08 04:26:25

+0

他也表示它不提供控制器,所以他不是在谈论Asp.Net MVC(Razor)项目。 – ivowiblo 2012-07-08 04:28:10

+0

http://www.compiledthoughts.com/2011/01/aspnet-mvc3-creating-razor-view-engine.html – 2015-06-23 21:39:26

16

在MVC模式中,M是示范,C是控制器,而V是视图。所以很自然地,在ASP.NET MVC模型中,有一个View Engine的概念。剃刀只是提供的视图引擎之一。另一个开箱即用的是“旧”WebForms(也可以通过这种方式编写自己的View Engine)。所以Razor没有隐藏在WebForms视图引擎边界内的代码隐藏的概念。

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

就个人而言,如果您选择ASP.NET MVC模式,或者在没有MVC的情况下使用普通WebForms,我一定会选择Razor View Engine,因为Razor的设计较少详细,比Webforms更简单。这也只是更近的所以它试图成为...只是更好:-)

作为一个侧面说明,剃刀分析器也可以用于ASP.NET MVC的以外的。它在一个不依赖于MVC或者Web程序集的程序集中实现。在这里看到更多关于此:http://www.west-wind.com/weblog/posts/2010/Dec/27/Hosting-the-Razor-Engine-for-Templating-in-NonWeb-Applications

1

好了,你有两个选择:

  1. 使用的WebForms:使用外的箱子,就可以使用服务器端控件(混合标记和业务规范),并使用母版页和皮肤,但面临一些复杂的这些便利! :)

  2. 使用MVC:或使用分离的设计模型,它给你一个更有组织的代码库。你可以先制作一个设计原型,或者先制作一个商业代码,然后再构建另一个方面,非常简单。即使你可以让设计师更好地控制他的作品,让他有能力做他/她想做的每件事。 - >这个是我的首选,因为它让我对代码有更多的控制,使我的代码更加简洁和干净。

如果您选择了MVC模式,那么你就面临着另一个选项...查看发动机

  1. 老MVC视图引擎:它不坏,但就是有点冗长
  2. Razor引擎:它和#1一样,为什么你不想使用它?它并没有取代MVC模式。它也更加简洁和容易,你既拥有MVC的力量,又具有Razor Engine的简单性。 Razor是一种更智能的标记语法,可帮助您专注于业务,而不是编写“<%”! 通过使用剃刀语法,您只需提供一个好处,MVC的全部功能就在您的指尖!

你也可以写简单的asp.net网页,只需用剃刀(C#或VB)的语法。(就像PHP)

  • 我个人的选择是MVC +剃须刀,最好的组合!
0

为了摆脱webform,MVC,Razor,WebPages以及更多来自微软的困惑,我更喜欢html - > javascript - > webapi。