IronPython on ASP.NET MVC IronPython on ASP.NET MVC python python

IronPython on ASP.NET MVC


Using IronPython in ASP.NET MVC: http://www.codevoyeur.com/Articles/Tags/ironpython.aspx

this page contains following articles:

  • A Simple IronPython ControllerFactory for ASP.NET MVC
  • A Simple IronPython ActionFilter for ASP.NET MVC
  • A Simple IronPython Route Mapper for ASP.NET MVC
  • An Unobtrusive IronPython ViewEngine for ASP.NET MVC


I'm currently working on this. It already supports a lot of things: https://github.com/simplic-systems/ironpython-aspnet-mvc

more information on this:

Import the aspnet module

import aspnet

You can write your own controller

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

You can automatically register all controller

aspnet.Routing.register_all()

You can use different http-methods

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

And there is much more. Here is a very short example

# ------------------------------------------------# This is the root of any IronPython based# AspNet MVC application.# ------------------------------------------------import aspnet# Define "root" class of the MVC-Systemclass 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")