Helpers - компьютеры, интернет, программирование

asp.net MVC — модель AJAX для контроллера

Можно ли передать мою модель представления контроллеру с помощью ajax без «перестройки» объекта?

У меня есть свое мнение:

@using Project.Models
@model InfoFormulaireEnqueteModele


@section Style{
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" />}


@section Scripts{
@Scripts.Render("~/bundles/autocomplete")
@Scripts.Render("~/bundles/timeentry")

<script type="text/javascript">
    var $status = $('#status'),
        $commentBox = $('#commentBox'),
        timeoutId;
    var model = @Model;  //<- something's wrong here

  $commentBox.keypress(function () {
    $status.attr('class', 'pending').text('changes pending');

    // If a timer was already started, clear it.
    if (timeoutId) clearTimeout(timeoutId);

    var r = '';
    // Set timer that will save comment when it fires.
    timeoutId = setTimeout(function () {
        var test = $('#commentBox').val();
        // Make ajax call to save data.
        $.ajax({
            type: "POST",
            data: JSON.stringify(model),
            url: '/Enquete/IndexPartial/',
            contentType: "application/json"
        }).done(function (res) {
            $("#SomeDivToShowTheResult").html(res);
        });
        $status.attr('class', 'saved').text('changes saved');
    }, 1000);
    return r;
 });

</script>

Контроллер:

    [HttpPost]
    public PartialViewResult IndexPartial(InfoFormulaireEnqueteModele m)
    {
        return PartialView("_IndexPartial", m);
    }

Я могу получить доступ к своему контроллеру, но моя модель (m) имеет только нулевые значения один раз в контроллере. Значения были установлены в контроллере перед отправкой в ​​представление.

01.03.2017

  • где r u установка значений при отправке на контроллер. вам нужно установить значения, а затем использовать отправить обратно. обратите внимание, что вы используете сообщение, поэтому вам нужно отправить значения json. Если вы печатаете модель, она будет нулевой, если я не ошибаюсь. 01.03.2017
  • можете ли вы распечатать это в консоли JSON.stringify(model) 01.03.2017
  • Что вы пытаетесь сделать здесь? Почему вы хотите вернуть исходную неизмененную модель на сервер? 02.03.2017
  • @StephenMuecke Я вызываю это для функции автосохранения ... она будет вызываться только после того, как пользователь перестанет редактировать поле в течение 1 с (на данный момент она применяется только для #commentBox, но если я смогу заставить ее работать, я применю это ко всему форма). 02.03.2017
  • @Model - это код на стороне сервера - это модель, которую вы изначально отправили клиенту. И чтобы отправить его обратно, вам нужно будет использовать var model = @Html.Raw(Json.Encode(@Model));, но это было бы бессмысленно. Если вам нужны значения ваших входных данных, то это data: { commentBox: $('#commentBox').val() } или включить все элементы управления формой - data: $('form').serialize(), (и удалить параметр contentType) 03.03.2017
  • Но если вы не сохраните это во временной базе данных, не делайте этого. Никогда не переопределяйте записи данных пользователей, если только пользователь не отправил форму. 03.03.2017

Ответы:


1

В вашем методе действия укажите [FromBody], как показано ниже.

[HttpPost]
public PartialViewResult IndexPartial([FromBody] InfoFormulaireEnqueteModele m)
{
  return PartialView("_IndexPartial", m);
}
01.03.2017

2

Вы должны сделать это следующим образом:

var model = @Html.Raw(Json.Encode(@Model));

Вот как вы конвертируете свою модель в json и передаете ее в js

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

Интуитивное понимание тензоров в машинном обучении
Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

Почему объяснимость так важна прямо сейчас?
По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

Анимированный математический анализ
Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

Создание простого слайдера изображений с помощью JavaScript
Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

Создание базы данных с помощью супергероя «Python»
В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

ИИ для чайников: руководство для начинающих по пониманию будущего технологий
Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..