2009-01-14 15 views
24

Alguien ha intentado utilizar IronPython ASP.NET MVC? Después de haber hecho un montón de desarrollo de Python recientemente, sería bueno continuar con el lenguaje a medida que avanzo en un posible proyecto ASP.NET MVC.IronPython en ASP.NET MVC

Estoy especialmente interesado en explotar los aspectos dinámicos de Python con características de .NET como LINQ y me gustaría saber si esto será posible. La otra ruta que puede ser viable para cierta programación dinámica sería C# 4.0 con su palabra clave dynamic.

pensamientos, experiencias?

Respuesta

14

Sí, there is an MVC example from the DLR team.

Usted también puede estar interesado en Spark.

+0

Las muestras vinculadas parecen estar a punto de WebForms en lugar de ASP.Net MVC –

+1

@Abhijit, por desgracia URL CodePlex parecen tener una vida útil limitada. En los más de 2 años desde que publiqué esta respuesta, rompieron el enlace. –

+0

¿Alguien está usando esto en producción? –

8

Usando IronPython en ASP.NET MVC: http://www.codevoyeur.com/Articles/Tags/ironpython.aspx

esta página contiene los artículos siguientes:

  • Un simple IronPython ControllerFactory para ASP.NET MVC
  • Un simple IronPython ActionFilter para ASP.NET MVC
  • Un simple IronPython Route Mapper para ASP.NET MVC
  • Un discreto IronPython ViewEngine para ASP.NET MVC
5

Actualmente estoy trabajando en esto. Ya es compatible con una gran cantidad de cosas: https://github.com/simplic-systems/ironpython-aspnet-mvc

más información sobre esto:

importar el módulo aspnet

import aspnet 

Usted puede escribir su propio controlador

class HomeController(aspnet.Controller): 

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

Puede registrar automáticamente todo el controlador

aspnet.Routing.register_all() 

se pueden utilizar diferentes métodos HTTP-

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

Y hay mucho más. Aquí es un ejemplo muy corto

# ------------------------------------------------ 
# 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

Si bien esto puede responder teóricamente a la pregunta, [sería preferible] (// meta.stackoverflow.com/q/8259) incluir aquí las partes esenciales de la respuesta y proporcionar el enlace de referencia. –

+0

@BhargavRao la respuesta ha mejorado, ¿ahora se ajusta a los requisitos? – BendEg