2009-01-14 10 views
24

Est-ce que quelqu'un a essayé ASP.NET MVC en utilisant IronPython? Après avoir fait beaucoup de développement Python récemment, il serait bon de continuer avec la langue que je vais dans un projet potentiel ASP.NET MVC.IronPython sur ASP.NET MVC

Je suis particulièrement intéressé par l'exploitation des aspects dynamiques de Python avec des fonctionnalités .NET telles que LINQ et je veux savoir si cela sera possible. L'autre route qui peut être viable pour certaines programmations dynamiques serait C# 4.0 avec son mot-clé dynamic.

Pensées, expériences?

Répondre

14

Oui, there is an MVC example from the DLR team. Vous pouvez également être intéressé par Spark.

+0

Les échantillons liés semblent être sur WebForms plutôt que ASP.Net MVC –

+1

@Abhijit, malheureusement URL CodePlex semblent avoir une durée de vie limitée. Dans les 2 ans et plus depuis que j'ai posté cette réponse, ils ont rompu le lien. –

+0

Est-ce que quelqu'un utilise ceci dans la production? –

8

En utilisant IronPython dans ASP.NET MVC: http://www.codevoyeur.com/Articles/Tags/ironpython.aspx

cette page contient des articles suivants:

  • Un simple IronPython ControllerFactory pour ASP.NET MVC
  • Un simple IronPython ActionFilter pour ASP.NET MVC
  • Un simple mappeur de routage IronPython pour ASP.NET MVC
  • Un ViewEngine IronPython discret pour ASP.NET MVC
5

Je suis en train de travailler dessus. Il soutient déjà beaucoup de choses: https://github.com/simplic-systems/ironpython-aspnet-mvc

plus d'informations à ce sujet:

Importer le module aspnet

import aspnet 

Vous pouvez écrire votre propre contrôleur

class HomeController(aspnet.Controller): 

    def index(self): 
     return self.view("~/Views/Home/Index.cshtml") 

Vous pouvez automatiquement enregistrer tout contrôleur

aspnet.Routing.register_all() 

Vous pouvez utiliser différentes méthodes http

@aspnet.Filter.httpPost 
    def postSample(self): 
     return self.view("~/Views/Home/Index.cshtml") 

Et il y a beaucoup plus. Voici un exemple très court

# ------------------------------------------------ 
# This is the root of any IronPython based 
# AspNet MVC application. 
# ------------------------------------------------ 

import aspnet 

# Define "root" class of the MVC-System 
class App(aspnet.Application): 

    # Start IronPython asp.net mvc application. 
    # Routes and other stuff can be registered here 
    def start(self): 

     # Register all routes 
     aspnet.Routing.register_all() 

     # Set layout 
     aspnet.Views.set_layout('~/Views/Shared/_Layout.cshtml') 

     # Load style bundle 
     bundle = aspnet.StyleBundle('~/Content/css') 
     bundle.include("~/Content/css/all.css") 

     aspnet.Bundles.add(bundle) 

class HomeController(aspnet.Controller): 

    def index(self): 
     return self.view("~/Views/Home/Index.cshtml") 

    def page(self): 
     # Works also with default paths 
     return self.view() 

    def paramSample(self, id, id2 = 'default-value for id2'): 
     # Works also with default paths 
     model = SampleModel() 
     model.id = id 
     model.id2 = id2 
     return self.view("~/Views/Home/ParamSample.cshtml", model) 

    @aspnet.Filter.httpPost 
    def postSample(self): 
     return self.view("~/Views/Home/Index.cshtml") 

class SampleModel: 
    id = 0 
    id2 = '' 

class ProductController(aspnet.Controller): 

    def index(self): 
     return self.view("~/Views/Product/Index.cshtml") 
+0

Bien que cela puisse théoriquement répondre à la question, [il serait préférable] (// meta.stackoverflow.com/q/8259) d'inclure les parties essentielles de la réponse ici, et de fournir le lien pour référence. –

+0

@BhargavRao réponse est améliorée, est-ce maintenant correspond aux exigences? – BendEg