От новичка до гуру: Курсы программирования на CyberDuff

С# теряет значение между двумя контроллерами ActionResults

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

WriteLine правильно показывает ValuationType как «сдачу в аренду».

        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, возникают ошибки, поскольку это значение равно null. Остальные 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;

Ваше здоровье


  • Можете ли вы показать код класса ValidationRequest? 18.01.2019
  • Ага, сейчас добавил. 18.01.2019
  • Это не полный класс. Меня интересуют свойства. 19.01.2019

Ответы:


1

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

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

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

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

Ты пишешь

return SelectAppoinment(request, model);

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

18.01.2019
Новые материалы

5 простых концепций Python, ставших сложными
#заранее извините 1) Переменные x = 4 y = 5 Переменная в Python — это символическое представление объекта. После присвоения некоторого объекта переменной Python мы приобретаем..

«Освоение вероятности: изучение совместной, предельной, условной вероятности и теоремы Байеса —…
Виды вероятности: Совместная вероятность Предельная вероятность Условная вероятность Диаграмма Венна в вероятностях: В “Set Theory” мы создаем диаграмму Венна...

Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

Отслеживание состояния с течением времени с дифференцированием снимков
Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

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

Игра в прятки с данными
Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

«Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..