百科问答小站 logo
百科问答小站 font logo



ASP.NET MVC 最好的视图引擎是什么? 第1页

  

user avatar   jeffz 网友的相关建议: 
      

WebForms,没觉得有什么不好的。


user avatar   Ivony 网友的相关建议: 
      

目前官方的视图引擎有两款:Razor和WebForm,

WebForm的太肿了,而且Control模型在MVC框架已经没用了,所以你可以理解为Razor是WebForm的减肥版,所以这两者之间肯定Razor更好。


但是Razor呢,总体来说我觉得是倒退了,因为Razor回到了ASP、PHP的时代,将HTML和代码杂凑在一起,当然Razor的语法是这种模型中最棒的,在代码和HTML之间的切换非常的流畅和自然,例如:

       @foreach( var item in list ) {   <div id="@item.ID">xxx</div> }      

这比起<%...%>或是<?...?>当然要简单许多,并且由于MVC框架的缘故,像组织数据什么的,是不需要在页面上处理的。


废话说完了来推荐私货,Jumony是一个开源的HTML引擎(注意不是XML引擎,因为Jumony可以正确处理所有浏览器可以处理的HTML文档,不论格式如何),通过HTML解析器将HTML文档解析为DOM,可以抽取数据,或者将HTML作为模板或是ASP.NET MVC的视图来使用。将HTML文件作为ASP.NET MVC的视图便是Jumony ViewEngine,一个开源的视图引擎。


与其他所有视图引擎不同的是,Jumony的视图是纯粹的HTML,没有任何的代码。当然,Jumony允许你写一些代码来对页面HTML DOM进行一些处理,但是绝大多数的任务都可以透过纯粹的HTML模板来解决。

例如ActionLink:

       <a action="Login">Click here to sign in.</a>      

例如partial view:

       <partial action="Login" controller="Site"></partial>      

例如数据绑定:

       <img src="{eval path=ImagePath}" /> <script>   var item = null;//{eval path=Item} </script>      

列表绑定:

       <div datamodel="{eval-list path=list}" id="{eval path=ID}">xxx</div>      

高级列表绑定:

       <div datamodel="{eval-list path=list, selector=.item}">   <div class="item" id="{eval path=ID"><eval path="Content" /></div>   <hr />   <div class="item alt" id="{eval path=ID"><eval path="Content" /></div>   <hr />   <div class="item" id="{eval path=ID"><eval path="Content" /></div> </div>      

样式绑定:

       <div style-color="{eval path=IsError, value=red}">xxx</div>      

以及URL路径的自动处理等等:

       <link href="../styles/main.css" rel="stylesheet" />      

Razor要写成:

       <link href="@Url.Content("../styles/main.css")" rel="stylesheet" />     

最后,任何一个视图引擎都有其适用的范畴,应灵活选择各个视图引擎来快速完成特定的工作。所有符合MVC规范的视图引擎,都可以进行混合渲染,例如Jumony视图引擎可以嵌一个Razor的部分视图,反过来也可以。所以最好的视图引擎就是根据特定的任务,灵活选择最合适的。当然最好是符合MVC的规范,以便于混合渲染。

甚至于,可以自己写一个视图引擎,例如用markdown文件作为视图的视图引擎,,,,,




  

相关话题

  如何提升ASP.NET网站首次打开速度? 
  在asp.net mvc的视图文件(.cshtml)中引用外部文件? 
  认为 Java 和 .NET 是 Web 主流的人怎样看待国内 90% 网站均为 PHP 开发的事实? 
  如何看待以下网页对C#的评论? 
  既然在语言层面上 Java 要落后于 C#,那为何国内 Java 架构到处都是? 
  程序集什么玩意?我知道其表现形式为dll和exe,但是exe不是直接执行的文件吗?而dll只是类库,供exe调用代码? 
  在C#中,如何实现跟native dll 中途的线程间通信? 
  Build 2018 开发者大会上发布的 .NET Core 3.0 规划蓝图透露了哪些信息? 
  .NET 6 的预览特性"new generic math" 对.net 数值计算 能带来什么影响? 
  ajax发送json数据到后台时,数据中包含html代码的文本,会出现Connection Error如何解决? 

前一个讨论
怎样评价和理解「贫穷是万恶之源」?
下一个讨论
女性该为自己穿得少招惹了色狼而负一定责任吗?





© 2025-02-20 - tinynew.org. All Rights Reserved.
© 2025-02-20 - tinynew.org. 保留所有权利