ANN: knockoutjs из ASP.Net MVC со сторогой типизацией
От: Евгений Акиньшин grapholite.com
Дата: 21.06.12 06:14
Оценка: 40 (5)
Опенсурсная библиотечка для работы с нокаутом из asp.net mvc через типизированные хелперы, в стиле mvc, с сохранением всех плюшек строгой типизации. Си-шарповские лямбда-выражения автоматически транслируются в биндинги на jscript для нокаута.

Сайт проекта
Статья на хабре

Пока альфа-версия, критика приветствуется
Не шалю, никого не трогаю, починяю примус Diagrams Designer for iPad and Windows 10
Re: ANN: knockoutjs из ASP.Net MVC со сторогой типизацией
От: Jack128  
Дата: 21.06.12 07:10
Оценка:
Здравствуйте, Евгений Акиньшин, Вы писали:

ЕА>Опенсурсная библиотечка для работы с нокаутом из asp.net mvc через типизированные хелперы, в стиле mvc, с сохранением всех плюшек строгой типизации. Си-шарповские лямбда-выражения автоматически транслируются в биндинги на jscript для нокаута.


ЕА>Сайт проекта

ЕА>Статья на хабре

ЕА>Пока альфа-версия, критика приветствуется


Насколько легко можно будет добавлять типизированные обертки для своих биндингов? На первый взгляд — только правкой KnockoutBinding<TModel> ??
Да, и почему бы сорцы не выложить на какой нить гитхаб/кодплекс ??
Re[2]: ANN: knockoutjs из ASP.Net MVC со сторогой типизацией
От: Евгений Акиньшин grapholite.com
Дата: 21.06.12 07:57
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Насколько легко можно будет добавлять типизированные обертки для своих биндингов? На первый взгляд — только правкой KnockoutBinding<TModel> ??


Очень легко добавляется с помощью Extension-методов

J>Да, и почему бы сорцы не выложить на какой нить гитхаб/кодплекс ??


Будет сделано
Не шалю, никого не трогаю, починяю примус Diagrams Designer for iPad and Windows 10
Re: ANN: knockoutjs из ASP.Net MVC со сторогой типизацией
От: Jack128  
Дата: 21.06.12 12:31
Оценка:
Здравствуйте, Евгений Акиньшин, Вы писали:

ЕА>Опенсурсная библиотечка для работы с нокаутом из asp.net mvc через типизированные хелперы, в стиле mvc, с сохранением всех плюшек строгой типизации. Си-шарповские лямбда-выражения автоматически транслируются в биндинги на jscript для нокаута.


ЕА>Сайт проекта

ЕА>Статья на хабре

ЕА>Пока альфа-версия, критика приветствуется


С несколькими viewModel'ами на одной странице не будет проблем?? вот в такой подход весьма удобен
Re[2]: ANN: knockoutjs из ASP.Net MVC со сторогой типизацией
От: Евгений Акиньшин grapholite.com
Дата: 21.06.12 15:57
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Здравствуйте, Евгений Акиньшин, Вы писали:


ЕА>>Опенсурсная библиотечка для работы с нокаутом из asp.net mvc через типизированные хелперы, в стиле mvc, с сохранением всех плюшек строгой типизации. Си-шарповские лямбда-выражения автоматически транслируются в биндинги на jscript для нокаута.


ЕА>>Сайт проекта

ЕА>>Статья на хабре

ЕА>>Пока альфа-версия, критика приветствуется


J>С несколькими viewModel'ами на одной странице не будет проблем?? вот в такой подход весьма удобен


С этим проблем не должно быть
Не шалю, никого не трогаю, починяю примус Diagrams Designer for iPad and Windows 10
Re: ANN: knockoutjs из ASP.Net MVC со сторогой типизацией
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 22.06.12 11:15
Оценка:
Здравствуйте, Евгений Акиньшин, Вы писали:

ЕА>Опенсурсная библиотечка для работы с нокаутом из asp.net mvc через типизированные хелперы, в стиле mvc, с сохранением всех плюшек строгой типизации. Си-шарповские лямбда-выражения автоматически транслируются в биндинги на jscript для нокаута.


ЕА>Сайт проекта

ЕА>Статья на хабре

ЕА>Пока альфа-версия, критика приветствуется


Интересная библиотека. Было бы здорово интегрировать с Script# чтобы айтемы в списки добавлялись без участия сервера.
Re: ANN: knockoutjs из ASP.Net MVC со сторогой типизацией
От: Jack128  
Дата: 22.06.12 11:42
Оценка:
Здравствуйте, Евгений Акиньшин, Вы писали:

ЕА>Пока альфа-версия, критика приветствуется



    public KnockoutTagBuilder<TModel> HyperlinkButton(string caption, string actionName, string controllerName, object routeValues = null, object htmlAttributes = null)
    {
      var tagBuilder = new KnockoutTagBuilder<TModel>(Context, "a", InstanceNames, Aliases);
      tagBuilder.ApplyAttributes(htmlAttributes);
      tagBuilder.ApplyAttributes(new { href = "#" });
      tagBuilder.Click(actionName, controllerName, routeValues);
      tagBuilder.InnerHtml = caption; // XSS же!!!
      return tagBuilder;
    }



Может оно конечно "by design", но как от это в разрез со стандартными хелперами идет. Html.ActionLink же экранирует введенный текст.
Re[2]: ANN: knockoutjs из ASP.Net MVC со сторогой типизацией
От: Евгений Акиньшин grapholite.com
Дата: 22.06.12 15:37
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Здравствуйте, Евгений Акиньшин, Вы писали:


ЕА>>Пока альфа-версия, критика приветствуется



J>
J>    public KnockoutTagBuilder<TModel> HyperlinkButton(string caption, string actionName, string controllerName, object routeValues = null, object htmlAttributes = null)
J>    {
J>      var tagBuilder = new KnockoutTagBuilder<TModel>(Context, "a", InstanceNames, Aliases);
J>      tagBuilder.ApplyAttributes(htmlAttributes);
J>      tagBuilder.ApplyAttributes(new { href = "#" });
J>      tagBuilder.Click(actionName, controllerName, routeValues);
J>      tagBuilder.InnerHtml = caption; // XSS же!!!
J>      return tagBuilder;
J>    }   
J>



J>Может оно конечно "by design", но как от это в разрез со стандартными хелперами идет. Html.ActionLink же экранирует введенный текст.


Нет, это косяк альфа-версии, спасибо что заметили, исправим
Не шалю, никого не трогаю, починяю примус Diagrams Designer for iPad and Windows 10
Re[2]: ANN: knockoutjs из ASP.Net MVC со сторогой типизацией
От: ldarcy  
Дата: 22.06.12 17:16
Оценка:
Здравствуйте, achmed, Вы писали:

A>Интересная библиотека. Было бы здорово интегрировать с Script# чтобы айтемы в списки добавлялись без участия сервера.


или с sharpkit, у него и прокси/биндинги к knockout уже есть, и Expressions можно было бы тогда убрать.
Re: ANN: knockoutjs из ASP.Net MVC со сторогой типизацией
От: sipank  
Дата: 22.06.12 20:32
Оценка:
Кстати, можно ещё на jsil.org посмотреть, может сильно упростить автопостроение клиентской части.
Re[3]: ANN: knockoutjs из ASP.Net MVC со сторогой типизацией
От: ldarcy  
Дата: 27.06.12 17:55
Оценка:
Здравствуйте, ldarcy, Вы писали:

L>или с sharpkit, у него и прокси/биндинги к knockout уже есть, и Expressions можно было бы тогда убрать.


Похоже, заработало вот с такой моделью:
    [JsType(JsMode.Prototype, Filename = "../generated/models.js")]
    public class HelloWorldModel
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }

        [Computed]
        public string FullName 
        { 
            get
            {
                return this.FirstName + " " + this.LastName;
            }
        }
    }


Expressions не нужны
Re: ANN: knockoutjs из ASP.Net MVC со сторогой типизацией
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 19.10.12 12:16
Оценка:
Здравствуйте, Евгений Акиньшин, Вы писали:

ЕА>Опенсурсная библиотечка для работы с нокаутом из asp.net mvc через типизированные хелперы, в стиле mvc, с сохранением всех плюшек строгой типизации. Си-шарповские лямбда-выражения автоматически транслируются в биндинги на jscript для нокаута.


ЕА>Сайт проекта

ЕА>Статья на хабре

ЕА>Пока альфа-версия, критика приветствуется


Пробуем переводить код с knockoujs на knockoutmvc.
Сложные вычисляемые свойства, которые не могут быть оттранслированы в js надо писать вручную. Для корневой модели это делается без проблем
viewModel.FullName = ko.computed(function() {return this.FirstName()+' '+this.LastName();})

Но есть проблема с вложенными моделями. Например, в модели есть свойства Author и Responsible одного типа Person, для каждого свойства надо сделать объявление
var fullName = function() {return this.FirstName()+' '+this.LastName();};
viewModel.Author.FullName = ko.computed(fullName);
viewModel.Responsible.FullName = ko.computed(fullName);

через prototype сделать не получается, потому что knockoutmvc не генерирует конструкторы для типов .NET.
Почему не генерируется конструкторы, как это делается в примерах knockoutjs?
Реально ли допилить генерацию js кода под себя?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.