вызов действия с параметром типа строки из JavaScript в MVC

Это именно то, что я искал после обнаружения того, что RedirectToAction() не будет передавать сложные объекты класса.

В качестве примера я хочу вызвать метод IndexComparison в контроллере LifeCycleEffectsResults и передать ему сложный объект класса с именем model.

Вот неудавшийся код:

return RedirectToAction("IndexComparison", "LifeCycleEffectsResults", model);

Стоит отметить, что строки, целые числа и т. д. выжили в пути к этому методу контроллера, но общие объекты списка страдали от того, что напоминало утечки памяти C.

Как было рекомендовано выше, вот код, который я заменил на него:

var controller = DependencyResolver.Current.GetService<LifeCycleEffectsResultsController>();

var result = controller.IndexComparison(model);
return result;

Все работает как сейчас. Спасибо, что завели путь.

0
задан Morteza.M 13 July 2018 в 18:52
поделиться

1 ответ

Ваш текущий код (первый подход) передает значение переменной e в качестве параметра данных для вызова $.get. Метод jQuery $.get отправит это как значения строки запроса. Таким образом, ваш код запускает вызов, как показано ниже.

/ViewProfile/howContactTel?testValue

Предполагая, что testValue является значением переменной e

Имя вашего параметра действия tel , Поэтому отправьте js-объект с свойством с этим именем.

Также используйте метод jquery html для обновления внутреннего html вашего div.

$.get("/ViewProfile/ShowContactTel", { tel: e })
 .then(function (r){
       $('#divTel').html(r);
  });

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

var url = "@Url.Action("ShowContactTel","ViewProfile");
$.get(url, { tel: e }).then(function (r){
    $('#divTel').html(r);
});
1
ответ дан Shyju 17 August 2018 в 12:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: