C # теряет значение между двумя контроллерами ActionResults - PullRequest
0 голосов
/ 18 января 2019

У меня проблема с тем, что значение, кажется, сбрасывается между двумя контроллерами ActionResults. Я создаю запрос как новый ValuationRequest и добавляю 4 значения, как показано ниже.

WriteLine правильно показывает ValuationType как «lettings»

        request = new ValuationRequest
        {
            ValuationType = new SearchType[] { SearchType.lettings },
            Postcode = model.Postcode,
            FromDate = DateTime.Now.AddHours(24),
            ToDate = DateTime.Now.AddDays(14)
        };

        Debug.WriteLine("ValTypeBefore:" + request.ValuationType[0].ToString());
        return RedirectToAction("select-appointment", request);

Однако, когда я передаю запрос следующему ActionResult, показанному ниже, и сразу же пытаюсь снова выполнить Debug.WriteLine, он выдает ошибку, так как это значение равно нулю. Остальные 3 поля отлично переносятся.

        [ActionName("select-appointment")]
        public ActionResult SelectAppoinment(ValuationRequest request, ValuationModel model)
        {
            Debug.WriteLine("ValTypeAfter:" + request.ValuationType[0].ToString());

            var valuationAppointments = WebServiceUtility.GetValuationAppointments(request);

Есть идеи, почему это произойдет?

«Запрос» проходит, но только ValuationType удаляется.

Код для класса ValuationRequest ниже:

public partial class ValuationRequest {

    private string postcodeField;

    private string officeCodeField;

    private System.DateTime fromDateField;

    private System.DateTime toDateField;

    private int durationField;

    private bool durationFieldSpecified;

    private int interludeField;

    private bool interludeFieldSpecified;

    private SearchType[] valuationTypeField;

Приветствия

1 Ответ

0 голосов
/ 18 января 2019

Возможно, это связано с сериализацией JSON, которая сериализует только общедоступные свойства.

Если вы перенаправите ваш запрос, он будет сериализован, а затем автоматически десилизован с использованием (обычно) JSON. Таким образом, вам понадобятся открытые свойства с getter и setter для всех данных, которые вы хотите передать. Также пустой конструктор.

Но если эти Действия находятся в одном контроллере, почему бы вам просто не вызвать Метод Действия, как любой другой метод в c #? Так что вместо

return RedirectToAction("select-appointment", request);

Вы пишете

return SelectAppoinment(request, model);

Я знаю, не совсем то, что вы просили, но, по крайней мере, это может быть обходной путь.

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