ASP.NET MVC 3 - создание динамического объекта только для возврата - PullRequest
0 голосов
/ 03 марта 2012

У меня есть приложение javascript (ASP.net MVC 3 на серверной части с SignalR), и я хочу вернуть только те поля, которые необходимы (оно должно быть динамическим).

Я использую структуру сущностей, но не могу выбрать только определенные столбцы, потому что мне нужны некоторые поля для проверки или что-то в методе, которые не нужны на стороне клиента.

Итак, в настоящее время я делаю это:

    public void GetPerson(int personID)
    {
        // Some logic...

        // person is a entity from the entity framework (Person)
        dynamic p = new
        {
            ID = person.ID,
            FirstName = person.FirstName,
            LastName = person.LastName
        };

        Clients[Context.ConnectionId].loadPerson(p);
    }

Но я не уверен, если это хорошая практика (производительность и т. Д.). Есть ли лучшее решение или я могу продолжать использовать динамический тип?

Ответы [ 3 ]

2 голосов
/ 03 марта 2012

Вы используете ExpandoObject?

Исходя из вашего примера, возможно, используйте только анонимный тип вместо динамического типа.

 var p = new
        {
            ID = person.ID,
            FirstName = person.FirstName,
            LastName = person.LastName
        };

Это обеспечит вам проверку во время компиляции. Тем не менее, либо должно работать. См. this для более подробной информации об анонимном и динамическом.

0 голосов
/ 03 марта 2012

Лучшая практика с MVC, независимо от того, возвращаете ли вы данные в представление или клиенту через JSON или даже используете SignalR, - это использование строго типизированного объекта.Просто создайте ViewModel специально для данных, которые вы хотите вернуть, и используйте их.Я обычно называю эти классы, используя соглашение [Controller] [Action] ViewModel.Так что это может быть MemberDetailsViewModel.

Преимущества включают проверку времени компиляции, упрощенную сериализацию и меньшее количество проблем, когда дело доходит до модификаций позже.начал играть с MVC.поверьте мне, это не стоит того удобства, которое вы ощущаете сейчас.

Если возвращаемые данные ДОЛЖНЫ быть динамическими, вы можете попытаться вернуть набор пар ключ-значение.

0 голосов
/ 03 марта 2012

выглядит хорошо для меня. Если вам нужны другие столбцы, верните их и сделайте с ними то, что вам нужно, а затем, как и вы, создайте анонимного человека и передайте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...