Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 与常规Django模板相比,NDjango模板有哪些限制?_Asp.net Mvc_Django_Templates_Ndjango - Fatal编程技术网

Asp.net mvc 与常规Django模板相比,NDjango模板有哪些限制?

Asp.net mvc 与常规Django模板相比,NDjango模板有哪些限制?,asp.net-mvc,django,templates,ndjango,Asp.net Mvc,Django,Templates,Ndjango,NDjango和Django模板之间是否存在任何差异、限制或缺陷?我对在未来的ASP.NET MVC项目中实现它们特别感兴趣 我确信我将无法使用我为Django编写的任何自定义模板标记,但我可以将它们移植到NDjango吗?是的,您可以。您可以通过编写自己的标记和过滤器集并在应用程序启动时注册它们来扩展默认标记和过滤器集。只有一件事需要记住——过滤器应该非常容易扩展,因此您只需实现两个直接接口中的一个(ISimpleFilter用于无参数过滤器,IFilter用于具有1个参数的过滤器)。对于标记

NDjango和Django模板之间是否存在任何差异、限制或缺陷?我对在未来的ASP.NET MVC项目中实现它们特别感兴趣


我确信我将无法使用我为Django编写的任何自定义模板标记,但我可以将它们移植到NDjango吗?

是的,您可以。您可以通过编写自己的标记和过滤器集并在应用程序启动时注册它们来扩展默认标记和过滤器集。只有一件事需要记住——过滤器应该非常容易扩展,因此您只需实现两个直接接口中的一个(ISimpleFilter用于无参数过滤器,IFilter用于具有1个参数的过滤器)。对于标记,概念是相同的,但由于NDjango本身是用F#编写的,因此从C#或VB使用ITag接口有点困难。这当然可行,但有点混乱。从F#开始,它非常简单

在f#中,它看起来是这样的:

/// A single tag implementation
and ITag = 
    /// Transforms a {% %} tag into a list of nodes and uncommited token list
    member Perform: Lexer.BlockToken -> IParser -> 
             Lexer.Token seq -> (Node list * Lexer.Token seq)
    public Tuple<FSharpList<Interfaces.Node>, IEnumerable<Lexer.Token>>
              Perform(Lexer.BlockToken __p1, Interfaces.IParser __p2,
                   IEnumerable<Lexer.Token> __p3)
在c#中,它看起来是这样的:

/// A single tag implementation
and ITag = 
    /// Transforms a {% %} tag into a list of nodes and uncommited token list
    member Perform: Lexer.BlockToken -> IParser -> 
             Lexer.Token seq -> (Node list * Lexer.Token seq)
    public Tuple<FSharpList<Interfaces.Node>, IEnumerable<Lexer.Token>>
              Perform(Lexer.BlockToken __p1, Interfaces.IParser __p2,
                   IEnumerable<Lexer.Token> __p3)
公共元组
执行(Lexer.BlockToken\uuu p1、Interfaces.IParser\uuuu p2、,
IEnumerable(可数)
再说一遍-过滤器在c#中很容易-事实上,它附带的大多数过滤器都是用c#编写的。标记在f#中很简单,但在c中有点混乱#

就限制而言,没有任何已知的限制,我也不知道


完全公开-我是ndjango的作者之一。

Hmm,学习F#的想法有点令人畏惧,但仅限于构建标记时需要它的范围。不管怎样,这听起来都比使用标准模板系统要好得多。正如你所说,需要f#的范围应该限于标签,如果你陷入困境,ndjango dev邮件列表应该能够提供帮助。