百科问答小站 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 FormsAuthenticationTicket 如何防御cookie胁持? 
  .NET类库中HashCodeHelper的实现原理是什么? 
  请各位前辈指导下简练代码的思路? 
  Java 8 的 stream API 和 C# 的 LINQ 哪个更慢? 
  windows10 界面是用什么语言编写的?.NET在最新的操作系统中有哪些应用 
  关于C#和Java对于结构体的保留,孰优孰劣? 
  C# 中的原子的基础数据类型能否用于同步多线程? 
  .Net中 编写 异步WebAPI 到底有何好处? 
  C#的Lambda表达式捕获变量疑问? 

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





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