百科问答小站 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文件作为视图的视图引擎,,,,,




  

相关话题

  微软开源了 Core CLR,作为 .NET 开发人员,是否需要花精力去研究Core CLR 源代码?为什么? 
  为什么C#的.NET库不默认提供「优先队列」容器? 
  如何自学 .NET Core,怎么学习才好? 
  为什么叫.NET?它和C#是什么关系? 
  关于自己写的ASP.NET MVC控件找不到视图的问题? 
  c#表达式目录树的作用是什么?利与弊是什么?应用场景有哪些? 
  什么时候用Model,什么时候用Entity? 
  如何开始系统的学习一个开源框架? 
  对于C#与C++之间的数据传输,用GCHandle或Marshal是否就是最好的方案了? 
  网站项目,用html静态页面+REST Service可以代替传统的MVC模式吗? 

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





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利