Вопрос об удалении get и set value в данных ajax, используя Script # - PullRequest
1 голос
/ 12 августа 2011

Поскольку теперь я начал использовать Script #, я попытался отправить пакет данных на сервер через ajax:

jQuery.AjaxRequest<RespondPackage>(url, new jQueryAjaxOptions("type", "POST", "dataType", "json", "data",  dataSendToServer));

с dataSendToServer в форме объекта типа "SendPackage" с использованием метода доступа get и set, например так:

public class SendPackage
{  private string reportID;
    public string ReportID
    {
        get { return reportID; }
        set { reportID = value; }
    }
    public SendPackage(string reportID)
    {
        this.reportID = reportID;
    }
}

При отправке данных на сервер с помощью ajax после преобразования в Javascript, он отправляет не только reportID (необходимые данные), но также get_reportID и set_reportID.

Я пробовал несколько методов, чтобы удалить фиктивные свойства доступа get и set, такие как Type.DeleteField, но, похоже, не работает.Поэтому я хочу спросить, существует ли какой-либо метод обработки данных, отправляемых на сервер, для удаления свойства get и set accessor?

Спасибо за ваше внимание.

Ответы [ 2 ]

1 голос
/ 16 августа 2011

Используйте класс записи, т. Е. Наследуйте ваш класс от базового класса Record.

Классы записи не определяются как обычный класс - вместо этого создается только метод фабрики, представляющий ваш ctor.Результатом фабрики является ванильный объект, который сериализуется в объект JSON, как и следовало ожидать.

Классы записей не могут иметь методы или свойства - только открытые свойства и самое большее ctor.

Обратите внимание, что вы также можете иметь любой класс, реализующий метод ToJSON - который переопределяет то, что сериализуется, используя функциональность JSON, встроенную в механизм сценариев (и, вероятно, jQuery также использует его).

1 голос
/ 12 августа 2011

Почему просто сделать класс как:

public class SendPackage
{  
    public string reportID;

    public SendPackage(string reportID)
    {
        this.reportID = reportID;
    }
}

т.е. сделать поле открытым и избавиться от собственности.

...