Преобразованная модель бритвы в свойства объекта JS пуста - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь преобразовать свою модель в объект javascript, но свойства равны нулю, если я переключаюсь на стандартную отправку MVC, свойства не равны нулю.

Код бритвы

 @using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myForm" })){@Html.TextBoxFor(model => model.Name, null, new { @class = "form-control", @id = "drpPipeline" })}

Javascript код

 $("#modalForm").on("submit", "#myForm", function(e) {
        e.preventDefault();  // prevent standard form submission
        debugger;
        var associationPoolUi = @Html.Raw(Json.Encode(@Model));
    });

1 Ответ

1 голос
/ 12 июня 2019

Вот как это устроено.

Давайте поговорим о:

  1. Бритва

Более чем уверен, что у вас есть класс A.Когда вы нажимаете свой метод действия внутри контроллера, вы возвращаете View с моделью, имеющей тип A.

Вы создаете форму на основе того, как выглядит класс A.Какими ценностями обладает Модель?Вероятно, все свойства будут иметь значение по умолчанию.Это то, что происходит в HTTP-запросе GET.

Волшебство происходит на POST.Если вы используете Razor, ваш метод действия, вероятно, примет в качестве параметра объект типа A.ASP.NET MVC достаточно умен, чтобы просмотреть все свойства, которые вы хотите отправить обратно в контроллер, и отобразить в класс A.

Имейте в виду, что Razor переводится в HTML.Это означает, что когда вы нажимаете на кнопку отправки, Razor не имеет власти там.

Javascript

После того, как ваша страница обработана, вы должны воспринимать все как HTML.Razor не может помочь вам в тот момент, когда вы обрабатываете событие submit.Думая в терминах HTML, что, по вашему мнению, будет отображаться при написании @Html.Raw(Json.Encode(@Model))?

Имейте в виду, что вы использовали Model только для создания формы, которую вы представите пользователю (со значениями по умолчанию).Не следует ожидать, что свойства Model будут обновляться каждый раз при заполнении формы (как в некоторых средах внешнего интерфейса).Я рекомендую вам попробовать это: просто нажмите CTRL + U на странице и посмотрите на эту конкретную строку.

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