我一直在ASP.NET MVC中为我寻找最适合的ViewEngine,在观察了JAVA,PHP,Python,Ruby,NodeJS中的大量模板引擎之后......我发现了玉模板并且喜欢它它有一些非常好的功能:
我也观察过很多ViewEnginge for ASP.NET MVC,有些非常接近jade,但仍有缺陷:
所以如果有一个ViewEngine更接近玉器,我会更聪明,有没有一个玉的端口到.NET?
谢谢
我正在使用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) 在ASP.NET MVC项目中使用HTML帮助程序后,是否有任何好处,最佳实践或利润?
当我尝试使用它们时,我发现我失去了HTML的速度,并且每当我使用HTML帮助程序时都会遇到很多困难.
其他[非技术人员]无法理解我使用Helper编写的内容,如果我想展示他们或者他们想要做他们需要花费更多时间的事情,即使他们具有HTML的工作知识.
如果我使用HTML助手,我会失去速度.当我使用HTML时,我只是键入,当然我不知道它.但是使用助手,很难理解.
当我使用HTML帮助器时,我们会得到什么?我认为这不算什么,因为我失去了速度.其他人无法理解我使用帮助器做什么,如果他们想要的话也无法自定义代码.
为什么我们使用HTML帮助器?
关于ASP.Net MVC中的View Engines,以及使用"自定义"而不是"默认" 的问题,有很多关于SO的问题.对于我作为业余爱好程序员来说,术语"视图引擎"是新的,我无法理解它的含义.所以,我的问题是:
什么是View引擎?
View Engine的功能是什么,MVC模式中扮演的角色是什么?(与1 ...密切相关)
程序员希望通过切换到不同的View Engine来改变/避免默认View Engine的主要特征/属性是什么?
当开发人员选择使用与标准不同的其他视图引擎时,常见的其他视图引擎的主要优点是什么?(我已经多次看到"Spark View引擎"这个名字了,我打赌也有其他人).
何时(在什么情况下)我想开发自己的View Engine?
在那里,我认为这就是我想问的问题(现在).给我看View Engines 101!=)
是否可以为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
剃刀更漂亮(因此很酷).
Webforms是我已经熟悉的东西.
当然,我毫无疑问会去学习新东西 - 剃刀.但我听说有两个让我担心的缺点:
那么使用ASP.NET MVC 3时Razor优于Webforms视图引擎的优势是什么?
我想要一个部分的默认内容让我们假设Footer.我怎样才能做到这一点.
另外,如果我想将局部视图渲染为默认内容,该怎么办?
谢谢
我在浏览器中查看我的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目录中存在的生成的代码文件中发生此错误.如何将此跟踪到我的页面中实际格式错误的代码行或页面上的用户控件?
我已经实现了一个类似于这里描述的多租户视图引擎:
让我覆盖视图的搜索位置,如下所示:
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)
如果我想允许租户拥有他们的一个布局页面,我将如何支持这个?
我试图摆弄我覆盖的视图引擎方法:
但似乎没有任何东西能够动态指定布局页面.
更新:
这是我到目前为止所做的工作.我使用了这个问题的答案/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) 我看过常见的嫌疑人...... Spark,NHaml等.对于那些对<%%>语法感到不舒服的人来说,它们似乎都是语法糖.还有其他有形的好处吗?在我看来,句法糖并不是改变整个视图引擎的充分理由.
到目前为止发布的原因:
viewengine ×10
asp.net-mvc ×5
razor ×4
asp.net ×1
c# ×1
express ×1
hogan.js ×1
html-helper ×1
intellisense ×1
javascript ×1
multi-tenant ×1
node.js ×1
pug ×1
templates ×1
vsx ×1