IronPython на ASP.NET MVC - PullRequest
       16

IronPython на ASP.NET MVC

24 голосов
/ 14 января 2009

Кто-нибудь пробовал ASP.NET MVC с использованием IronPython? Сделав большую часть разработки на Python в последнее время, было бы неплохо продолжить работу над языком, поскольку я вхожу в потенциальный проект ASP.NET MVC.

Мне особенно интересно использовать динамические аспекты Python с такими функциями .NET, как LINQ, и хочу знать, будет ли это возможно. Другим маршрутом, который может быть жизнеспособным для определенного динамического программирования, был бы C # 4.0 с его ключевым словом dynamic.

Мысли, переживания?

Ответы [ 3 ]

14 голосов
/ 14 января 2009

Да, есть пример MVC от команды DLR .

Вы также можете быть заинтересованы в Spark .

8 голосов
/ 19 ноября 2010

Использование IronPython в ASP.NET MVC: http://www.codevoyeur.com/Articles/Tags/ironpython.aspx

Эта страница содержит следующие статьи:

  • Простая фабрика контроллеров IronPython для ASP.NET MVC
  • Простой ActionFilter IronPython для ASP.NET MVC
  • Простой сопоставитель маршрутов IronPython для ASP.NET MVC
  • Ненавязчивый IronPython ViewEngine для ASP.NET MVC
5 голосов
/ 23 февраля 2016

Я сейчас работаю над этим. Он уже поддерживает много вещей: https://github.com/simplic-systems/ironpython-aspnet-mvc

больше информации об этом:

Импорт модуля aspnet

import aspnet

Вы можете написать свой собственный контроллер

class HomeController(aspnet.Controller):

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

Вы можете автоматически зарегистрировать все контроллеры

aspnet.Routing.register_all()

Вы можете использовать разные http-методы

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

И это еще не все. Вот очень короткий пример

# ------------------------------------------------
# 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")
...