Asp.Net Webforms与Asp.Net WebSite(Razor)和Asp.Net MVC

cod*_*biz 26 .net asp.net asp.net-mvc razor

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

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

在此输入图像描述

我知道Razor的语法是什么,在MVC 3中引入.在问这个问题之前,我决定为ASP.Net(Razor)创建一个测试项目,看看它与普通的ASP.Net webforms和ASP.Net有什么不同. MVC.我发现没有像我们在MVC中那样的模型/视图/控制器文件夹.

我发现Master页面的指定方式不同,Master页面更清晰,没有更多 <asp:ContentPlaceHolder />

但我的问题是:

  • 我注意到它使用了.cshtml,没有更多的代码隐藏吗?
  • ASP.Net(Razor)和ASP.Net MVC之间的异同
  • 它可以扩展到像ASP.Net MVC这样的功能,例如添加Controller?View/Model,Custom Routing我猜?
  • 为什么我们有ASP.Net MVC时会存在这种情况?难道这不会让人不愿意转向ASP.Net MVC吗?
  • 为什么你会选择ASP.Net + Razor而不是ASP.Net MVC?

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

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

Asp.Net网页

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

Sim*_*ier 19

在MVC模式中,M是模型,C是控制器,V是视图.因此,很自然地,在ASP.NET MVC模型中,存在View Engine的概念.Razor只是提供的View Engines之一.开箱即用的另一个是"旧的"WebForms(你也可以编写自己的View Engine).所以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


Gle*_*rie 18

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

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

Razor v.Web Forms Sidebar:在ASP.NET Web窗体中,您必须确定何时开始使用"<%"编写服务器代码,然后在编写完服务器代码时需要使用"%>"来识别它.我喜欢ASP.NET Web Forms,但这很笨重.使用Razor,您可以确定何时开始使用"@"编写服务器代码,然后在下次开始编写服务器标签时(以"<"开头),它"确定"您已完成服务器代码.编写与某些服务器代码混合的html是一种更简洁的方法.

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

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

其他链接:

  • 你的解释很好。你已经表达了你的观点,但这还不够。_在 ASP.Net (Razor) 中使用服务器控件/用户控件_怎么样?ASP.Net (Razor) 项目几乎看起来像一个空的 ASP.Net MVC 项目。您能多快将其转换为 ASP.Net MVC?- 技术的 (2认同)
  • 在MVC中有部分视图来并行用户控件.在我看来,你不会转换/转换到另一个.只是重建.虽然你可以分享视图.Web编程有两个部分,确定您将在页面上显示的内容(C#)并在页面上实际呈现它.我不能在一篇文章中教你关于所有3个的一切.很抱歉地说.更多信息请访问http://asp.net/mvc/mvc3 (2认同)
  • 有许多不同的应用程序具有不同程度的复杂性和复杂性.有一些简单的场景,开发人员不想弄乱单独的代码文件.这些不是您可能习惯使用的模式,但这并不意味着它们无效.请参阅WebMatrix上的ScottGu博客文章.这是一个快速站立简单网站(博客,CMS等)的工具.链接添加到上面的响应 (2认同)

Ivo*_*Ivo 5

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

@inherits Index
Run Code Online (Sandbox Code Playgroud)

然后

public class Index : WebViewPage { }
Run Code Online (Sandbox Code Playgroud)

(此处提供更多信息:http : //www.compiledthoughts.com/2011/01/aspnet-mvc3-creating-razor-view-engine.html

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

我认为这样做是为了使事情变得非常简单,但我实际上并不知道...

最后,我总是选择带剃须刀的asp.net mvc。

希望能帮助到你