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




  

相关话题

  微软开放.net框架源代码后,未来的发展有哪些可期待的? 
  中国有哪些比较出名的C#大佬。? 
  关于自己写的ASP.NET MVC控件找不到视图的问题? 
  对于C#里面的协变和逆变的理解的问题? 
  在asp.net mvc的视图文件(.cshtml)中引用外部文件? 
  ASP.NET 5 和 ASP.NET MVC 6 是什么关系,是不是要分裂了,是一伙人在弄吗? 
  既然.NET平台如此优秀,为什么微软不推广到Linux、Mac等平台上? 
  如何提升ASP.NET网站首次打开速度? 
  C#如何实现类似Nullable<T>的效果? 
  为什么windows7不能安装iis8? 

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





© 2025-04-16 - tinynew.org. All Rights Reserved.
© 2025-04-16 - tinynew.org. 保留所有权利