标签: viewengine

是否有ASP.NET MVC的玉模板引擎?

我一直在ASP.NET MVC中为我寻找最适合的ViewEngine,在观察了JAVA,PHP,Python,Ruby,NodeJS中的大量模板引擎之后......我发现了玉模板并且喜欢它它有一些非常好的功能:

  1. 默认情况下对所有html进行编码,就像剃刀一样,它是安全性和节制性的一个很好的补充
  2. 通过缩进结构,所以摆脱标签地狱,写完HTML多年后,我讨厌所有那些<>!
  3. 清除逻辑代码,通过if/else/for前面的单行" - "来最小化选择和循环的代码.
  4. 空白条,玉输出"压缩"的HTML,在标签或文本之间没有额外的空格

我也观察过很多ViewEnginge for ASP.NET MVC,有些非常接近jade,但仍有缺陷:

  • NHaml通过缩进构造HTML,但默认情况下不编码html,标签前缀%真的很烦人
  • Razor可能是默认编码html的唯一ViewEngine,但它对我来说仍然有点沉重,因为razor的基本标记仍然是html标签,而且剃刀也无法为我删除额外的空白

所以如果有一个ViewEngine更接近玉器,我会更聪明,有没有一个玉的端口到.NET?

谢谢

asp.net-mvc templates viewengine pug

19
推荐指数
2
解决办法
9790
查看次数

部分使用Node.js + Express + Hogan.js

我正在使用Node.js + Express开发一个站点并使用视图引擎Hogan.js.

这是我的档案app.js:

/**
 * Module dependencies.
 */

var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path');

var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'hjs');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser('your secret here'));
  app.use(express.session());
  app.use(app.router);
  app.use(require('less-middleware')({ src: __dirname + '/public' }));
  app.use(express.static(path.join(__dirname, 'public')));
});

app.configure('development', function(){
  app.use(express.errorHandler());
});

app.get('/', routes.index);
app.get('/about', routes.about);
app.get('/users', user.list);

http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening …
Run Code Online (Sandbox Code Playgroud)

javascript viewengine node.js express hogan.js

18
推荐指数
2
解决办法
2万
查看次数

为什么我们在ASP.NET MVC中使用HTML帮助器?

在ASP.NET MVC项目中使用HTML帮助程序后,是否有任何好处,最佳实践或利润?

当我尝试使用它们时,我发现我失去了HTML的速度,并且每当我使用HTML帮助程序时都会遇到很多困难.

其他[非技术人员]无法理解我使用Helper编写的内容,如果我想展示他们或者他们想要做他们需要花费更多时间的事情,即使他们具有HTML的工作知识.

如果我使用HTML助手,我会失去速度.当我使用HTML时,我只是键入,当然我不知道它.但是使用助手,很难理解.

当我使用HTML帮助器时,我们会得到什么?我认为这不算什么,因为我失去了速度.其他人无法理解我使用帮助器做什么,如果他们想要的话也无法自定义代码.

为什么我们使用HTML帮助器?

html-helper viewengine razor asp.net-mvc-2

16
推荐指数
1
解决办法
6753
查看次数

什么是ASP.Net MVC视图引擎?

关于ASP.Net MVC中的View Engines,以及使用"自定义"而不是"默认" 的问题,有很多关于SO的问题.对于我作为业余爱好程序员来说,术语"视图引擎"是新的,我无法理解它的含义.所以,我的问题是:

  1. 什么是View引擎?

  2. View Engine的功能是什么,MVC模式中扮演的角色是什么?(与1 ...密切相关)

  3. 程序员希望通过切换到不同的View Engine来改变/避免默认View Engine的主要特征/属性是什么?

  4. 当开发人员选择使用与标准不同的其他视图引擎时,常见的其他视图引擎的主要优点是什么?(我已经多次看到"Spark View引擎"这个名字了,我打赌也有其他人).

  5. 何时(在什么情况下)我想开发自己的View Engine?

在那里,我认为这就是我想问的问题(现在).给我看View Engines 101!=)

asp.net-mvc viewengine

14
推荐指数
1
解决办法
3756
查看次数

如何为支持嵌入式代码段的模板或标记语言编写Visual Studio扩展

是否可以为Visual Studio 2010编写扩展,为支持嵌入式代码片段的自定义模板或标记语言提供语法高亮,智能感知,大纲等,类似于ASP .NET MVC 3中的Razor工具?这可以在不使用私有API的情况下完成,无需访问Microsoft内部文档,最重要的是,无需重新实现嵌入式编程语言(即C#或VB)的语法高亮,智能感知等

SDK文档似乎表明 Visual Studio编辑器通过投影缓冲区支持嵌入式语言,但它并没有真正提供任何细节或示例.Microsoft.VisualStudio.TextManager.Interop中的一些"用于编辑器和语言服务的遗留互操作接口" 似乎也很相关,例如IVsTextBufferCoordinator,但文档并没有说明所有这些部分如何组合在一起.

假设投影缓冲区实际上做了我希望的事情,我可以在哪里挂钩到编辑器中用投影缓冲区替换普通的文本缓冲区?

是否有人可以获得有关支持嵌入式语言的API的更多信息,或者可以指出我正确的方向?

vsx intellisense visual-studio-2010 viewengine visual-studio

14
推荐指数
1
解决办法
1370
查看次数

Razor vs Webforms查看新ASP.NET MVC 3站点的引擎

剃刀更漂亮(因此很酷).

Webforms是我已经熟悉的东西.

当然,我毫无疑问会去学习新东西 - 剃刀.但我听说有两个让我担心的缺点:

  • 不能轻易地重用现有的Web表单控件 - 在极少数情况下我可能需要拖动一些东西...我会重申 - 'RARE'
  • 我听说渲染效率较低(比Web表单花费的时间更长)

那么使用ASP.NET MVC 3时Razor优于Webforms视图引擎的优势是什么?

asp.net-mvc viewengine razor asp.net-mvc-3

13
推荐指数
1
解决办法
3万
查看次数

Razor中Section的默认内容

我想要一个部分的默认内容让我们假设Footer.我怎样才能做到这一点.

另外,如果我想将局部视图渲染为默认内容,该怎么办?

谢谢

viewengine razor asp.net-mvc-3

13
推荐指数
2
解决办法
4815
查看次数

ASP.NET如何解决CS1513:}页面上的预期错误

我在浏览器中查看我的ASP.NET页面时在运行时收到错误.我没有得到任何构建错误但是我在运行时遇到以下编译器错误:

编译错误

描述:编译服务此请求所需的资源时发生错误.请查看以下特定错误详细信息并相应地修改源代码.

Compiler Error Message: CS1513: } expected

Source Error:


Line 329:            #line hidden
Line 330:            __output.Write("\r\n\t\t\t</div>\r\n\t\t");
Line 331:        }
Line 332:        
Line 333:        private System.Web.UI.Control __BuildControl__control7() {

Source File: c:\Windows\Microsoft.NET\Framework\v1.1.4322\
    Temporary ASP.NET Files\xxxxxxxx\450ffa78\d46d847d\
    k1gsz9dj.0.cs    Line: 331 
Run Code Online (Sandbox Code Playgroud)

我在源代码中找不到任何遗漏},并且在Temporary ASP.NET Files目录中存在的生成的代码文件中发生此错误.如何将此跟踪到我的页面中实际格式错误的代码行或页面上的用户控件?

asp.net compiler-errors viewengine generated-code

12
推荐指数
2
解决办法
2万
查看次数

使用自定义Razor视图引擎处理布局属性

我已经实现了一个类似于这里描述的多租户视图引擎:

让我覆盖视图的搜索位置,如下所示:

    MasterLocationFormats = new[]
    {
        "~/Views/%1/{1}/{0}.cshtml",
        "~/Views/%1/Shared/{0}.cshtml",
        "~/Views/Default/{1}/{0}.cshtml",
        "~/Views/Default/Shared/{0}.cshtml",
    };
Run Code Online (Sandbox Code Playgroud)

其中%1替换为活动租户的正确文件夹.这是一个很好的例外问题.当我在我的视图上定义布局路径时,如下所示:

Layout = "~/Views/Default/Shared/_MyLyout.cshtml";
Run Code Online (Sandbox Code Playgroud)

由于我必须硬编码布局页面的确切位置,这有点违背了多租户的目的.我希望能够做到这样的事情:

Layout = "~/Views/%1/Shared/_MyLyout.cshtml";
Run Code Online (Sandbox Code Playgroud)

如果我想允许租户拥有他们的一个布局页面,我将如何支持这个?

我试图摆弄我覆盖的视图引擎方法:

  • CreatePartialView
  • CreateView的
  • 文件已存在

但似乎没有任何东西能够动态指定布局页面.

更新:

这是我到目前为止所做的工作.我使用了这个问题的答案/sf/answers/650191881/稍加修改以创建一个HTML帮助器:

public static string GetLayoutPageForTenant( this HtmlHelper html, string LayoutPageName )
{
    var layoutLocationFormats = new[]
    {
        "~/Views/{2}/{1}/{0}.cshtml",
        "~/Views/{2}/Shared/{0}.cshtml",
        "~/Views/Default/{1}/{0}.cshtml",
        "~/Views/Default/Shared/{0}.cshtml",
    };

    var controller = html.ViewContext.Controller as MultiTenantController;
    if( controller != null )
    {
        var tenantName = controller.GetTenantSchema();
        var controllerName = html.ViewContext.RouteData.Values["Controller"].ToString();

        foreach( var item in layoutLocationFormats )
        { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc viewengine multi-tenant razor

12
推荐指数
1
解决办法
4002
查看次数

使用备用ASP.NET MVC视图引擎有什么好处?

我看过常见的嫌疑人...... Spark,NHaml等.对于那些对<%%>语法感到不舒服的人来说,它们似乎都是语法糖.还有其他有形的好处吗?在我看来,句法糖并不是改变整个视图引擎的充分理由.

到目前为止发布的原因:

  1. 更容易从不同的平台过渡
  2. 更自然的上下文切换
  3. 更好地分离关注点
  4. 更少的代码行
  5. 更好地抵制跨站点脚本
  6. 更好的XHTML合规性

asp.net-mvc viewengine

11
推荐指数
1
解决办法
889
查看次数