Строго введите возвращаемый JSON, используя MonoRail

StackOverflow https://stackoverflow.com/questions/1278221

  •  16-09-2019
  •  | 
  •  

Вопрос

Я вызываю следующий метод в моем контроллере, используя $.getJSON()

    [return: JSONReturnBinder]
    public object ProfileFields()
    {
        var userfields = _profileSvc.GetFields(282);
        var fields = from f in userfields
                     select new {f.ID, f.FieldName};

        return fields;
    }

Мой _profileSvc возвращается с дополнительными данными, которые мне не нужны (на самом деле я получаю ошибки NHibernate, потому что сеанс закрыт).

Есть ли лучший способ делать то, что я делаю?Должен ли я строго вводить возвращаемые данные или этого подхода достаточно?

Спасибо.

Это было полезно?

Другие советы

Вы уже пробовали использовать

[return: JSONReturnBinder(Properties = "ID,FieldName")]
public object ProfileFields()
{
        var userfields = _profileSvc.GetFields(282);
    return userfields;
}

Я надеюсь, что это поможет.

Во-первых, я бы изменил возвращаемое значение действия на IList ...

Я думаю, что ошибка закрытия сеанса может быть вызвана задержкой выполнения 'var fields'.Если вы измените свой оператор return на fields.ToList(), это приведет к принудительному выполнению лямбда-выражения, и вы, возможно, избавитесь от ошибки сеанса:

[return: JSONReturnBinder]
    public object ProfileFields()
    {
            var userfields = _profileSvc.GetFields(282);
            var fields = from f in userfields
                         select new {f.ID, f.FieldName};

    return fields.ToList();
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top