Почему в моем приложении MVC задано значение jQuery для поля ввода, которое отправляется как ноль на мой контроллер? - PullRequest
0 голосов
/ 30 января 2019

Это немного странно, чего я никогда раньше не испытывал, и поиск не дал результатов, соответствующих происходящему.У меня есть простая форма в моем веб-приложении MVC, которое использует библиотеку KendoUI.Одно из моих полей ввода называется «CarName», которое устанавливается с помощью jQuery.

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

@(Html.Kendo().DropDownList()
.Name("Cars")
.DataTextField("Name")
.DataValueField("CarId")
.MinLength(3)
.Events(e => e.Change("carChange"))
.Filter(FilterType.Contains)
.DataSource(source => {
    source.Custom()
    .ServerFiltering(true)
    .ServerPaging(true)
    .PageSize(80)
    .Type("aspnetmvc-ajax")
    .Transport(transport => {
        transport.Read("ReadCars", "Home");
    })
    .Schema(schema => {
        schema
        .Data("Data")
        .Total("Total")
        .Errors("Errors");
    });
})
.Virtual(v => v.ItemHeight(30)))

Вот стандартное текстовое поле

<input type="text" id="CarName" name="CarName" />

При изменении раскрывающегося списка записывается значение в текстовое поле ввода.Вот функция carChange, которая обрабатывает это.

function carChange() {
    var ddlText = ("#Cars").data("kendoDropDownList");
    var name = $('#CarName');
    name.val(ddlText.value());

Значение устанавливается, однако, когда я отправляю форму своему контроллеру и устанавливаю точку останова, поле CarName равно null.Итак, я вижу значение, измененное в форме, но контроллеру присваивается нулевое значение, поскольку ничего не публикуется.

Если я вручную ввожу данные на вход CarName, данные передаются на контроллер безлюбые проблемы.

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

1 Ответ

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

Хорошо, я нашел проблему.Несмотря на то, что значение обновляется, для KendoUI Popup требуется, чтобы change был запущен на самом входе.В противном случае он не видит поле как завершенное.В нормальной ситуации формы этот метод val() будет работать, но, поскольку мы используем KendoUI, в этой ситуации требуется событие change.

Простое добавление триггера решило проблему.

function carChange() {
    var ddlText = ("#Cars").data("kendoDropDownList");
    var name = $('#CarName');
    name.val(ddlText.value());
    name.change();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...