下拉列表不会更新所选值

斯皮茨

我有一个dropdownlist

<div class="a">
    @Html.DropDownList("StorageId", null, new { @class = "form-control" })
    @Html.ValidationMessageFor(model => model.StorageId)
</div>

HTML:

<div class="a">
                <select class="form-control" id="StorageId" name="StorageId"><option selected="selected" value="1">Brak Brak</option>
<option value="2">First</option>
<option value="23">Second</option>
<option value="24">Third</option>
</select>
                <span class="field-validation-valid" data-valmsg-for="StorageId" data-valmsg-replace="true"></span>
            </div>

填充代码:

ViewBag.StorageId = new SelectList(unitOfWork.storageRepository.Get(), "Id", "Name", deviceusage.StorageId);

与此Ajax请求一起将所有数据发送到控制器:

    $.ajax({
    url: "/DeviceUsage/Edit",
    type: "POST",
    contentType: "application/json; charset=utf-8",
    headers: {
        'RequestVerificationToken': '@TokenHeaderValue()'
    },
    data: JSON.stringify({
        deviceusage: {
            DeviceInstanceId: $('.a').children("#DeviceInstanceId").val(),
            UserId: $('.a').children('#UserId').val(),
            StorageId: $('.a').children('#storageId').val()

        }
    }),
    error: function (data) {
        alert("wystąpił nieokreślony błąd " + data);
    },
    success: function (data) {
        if (data.ok) {
            $("#Modal").modal('hide');
            window.location = data.newurl;
        }
        else {
            $('.modal-body').html(data);
       }
    }
})

没关系,我在此下拉列表中选择的内容不会更新。更改第一个选择后,始终将第一个发送给控制器。

@Update:这是我用来处理“ Post”调用的控制器方法:

public ActionResult Edit([Bind(Include="StorageId,UserId,DeviceInstanceId")] DeviceUsage deviceusage)
    {
        ValidateRequestHeader(Request);
        if (deviceusage.UserId == 6 && deviceusage.StorageId == (int)Storage.Biurko)
        {
            ModelState.AddModelError("", "Zarezerwowane urządzenie nie moze byc przypisane do biurka");
        }
        if (deviceusage.UserId == 1 && deviceusage.StorageId == (int)Storage.Biurko)
        {
            ModelState.AddModelError("", "Wolne urządzenie nie może przebywać na jakimś biurku");
        }
        if ((deviceusage.UserId != 1 & deviceusage.UserId != 6) & deviceusage.StorageId != (int)Storage.Biurko)
        {
            ModelState.AddModelError("", "Urzązenie przypisane do kogos nie moze przebywac w magazynie");
        }
        if (ModelState.IsValid)
        {

            unitOfWork.deviceUsageRepository.Update(deviceusage);
            unitOfWork.Save();
            return Json(new { ok = true, newurl = Url.Action("Index") });
        }
        ViewBag.DeviceInstanceId = new SelectList(unitOfWork.deviceInstanceRepository.Get(), "Id", "SerialNo", deviceusage.DeviceInstanceId);
        ViewBag.StorageId = new SelectList(unitOfWork.storageRepository.Get(), "Id", "Name", deviceusage.StorageId);
        var data = unitOfWork.userRepository.Get()
        .Select(s => new
        {
            Id = s.Id,
            Credentials = s.Name + " " + s.Surname
        }
        );
        ViewBag.UserId = new SelectList(data, "Id", "Credentials", deviceusage.UserId);
        return PartialView(deviceusage);
    }

如您所见,它的返回是PartialView因为下拉列表位于模式窗口中,该窗口随Ajax调用返回而更新

@ Update2

在使用带有以下代码的浏览器控制台进行测试期间:

$('#StorageId').val()

我设法找到了:

  • 第一次发送之前其正确返回的值

  • 如果由于数据错误而重新加载了模态。使用列表更改选择的值不会更改任何内容。与此代码一起返回的值是使用ajax发送的错误。

梦想家

总是将第一个值提交给控制器的问题背后的原因是因为此属性在下拉列表框中设置为第一个选项selected="selected"

您可以像这样通过更改事件回叫来绕过此行为

JQUERY代码:

$('.a select').on('change',function() {
      $(this).find('option:selected').attr("selected","selected");
}); 

在页面正文$(document).ready( function() { ...... })onload添加上述事件侦听器

快乐编码:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从下拉菜单更改文本输入不会更新所选的div

来自分类Dev

宏不会更新所选的行/列

来自分类Dev

ComboBox不会更新所选项目

来自分类Dev

md-select中的ng-model不会更新所选值

来自分类Dev

AngularJS选择-在控制器中设置ng-model不会更新所选值

来自分类Dev

md-select中的ng-model不会更新所选值

来自分类Dev

jQuery mobile Multiselect不会更新所选属性

来自分类Dev

更新所选行的最小值列

来自分类Dev

Django ModelForm ManyToManyField无法更新所选值

来自分类Dev

GridView编辑模板中的下拉列表不会更新列的值

来自分类Dev

gridview编辑模板中的下拉列表不会更新列的值

来自分类Dev

通过JavaScript完成后,剑道下拉列表不会绑定所选值

来自分类Dev

下拉列表中的所选值无效:无法设置所选值

来自分类Dev

AngularJS下拉列表不显示所选值

来自分类Dev

JavaScript创建下拉列表并获取所选值

来自分类Dev

从REACT的下拉列表中提取所选值

来自分类Dev

如何在yii的更新视图中的多下拉列表中加载所选值?

来自分类Dev

如何在从下拉列表中选择值时刷新所有下拉列表

来自分类Dev

ASP.Net我从下拉列表中更新的值不会更新/显示

来自分类Dev

Magento更新所选产品的索引

来自分类Dev

无法按用户更新所选行

来自分类Dev

所选下拉值应在立即列值中更新

来自分类Dev

有什么方法可以仅以通用方式更新所选值的表?

来自分类Dev

Coldfusion包括模板下拉列表,选择所选值

来自分类Dev

AngularJS-下拉列表不保留所选值

来自分类Dev

在下拉列表中获取所选项目的值

来自分类Dev

如何保存下拉列表中所选值的ID

来自分类Dev

自定义下拉列表仅显示所选值Angular

来自分类Dev

在下拉列表中检索所选元素的值-ReactJS

Related 相关文章

  1. 1

    从下拉菜单更改文本输入不会更新所选的div

  2. 2

    宏不会更新所选的行/列

  3. 3

    ComboBox不会更新所选项目

  4. 4

    md-select中的ng-model不会更新所选值

  5. 5

    AngularJS选择-在控制器中设置ng-model不会更新所选值

  6. 6

    md-select中的ng-model不会更新所选值

  7. 7

    jQuery mobile Multiselect不会更新所选属性

  8. 8

    更新所选行的最小值列

  9. 9

    Django ModelForm ManyToManyField无法更新所选值

  10. 10

    GridView编辑模板中的下拉列表不会更新列的值

  11. 11

    gridview编辑模板中的下拉列表不会更新列的值

  12. 12

    通过JavaScript完成后,剑道下拉列表不会绑定所选值

  13. 13

    下拉列表中的所选值无效:无法设置所选值

  14. 14

    AngularJS下拉列表不显示所选值

  15. 15

    JavaScript创建下拉列表并获取所选值

  16. 16

    从REACT的下拉列表中提取所选值

  17. 17

    如何在yii的更新视图中的多下拉列表中加载所选值?

  18. 18

    如何在从下拉列表中选择值时刷新所有下拉列表

  19. 19

    ASP.Net我从下拉列表中更新的值不会更新/显示

  20. 20

    Magento更新所选产品的索引

  21. 21

    无法按用户更新所选行

  22. 22

    所选下拉值应在立即列值中更新

  23. 23

    有什么方法可以仅以通用方式更新所选值的表?

  24. 24

    Coldfusion包括模板下拉列表,选择所选值

  25. 25

    AngularJS-下拉列表不保留所选值

  26. 26

    在下拉列表中获取所选项目的值

  27. 27

    如何保存下拉列表中所选值的ID

  28. 28

    自定义下拉列表仅显示所选值Angular

  29. 29

    在下拉列表中检索所选元素的值-ReactJS

热门标签

归档