【问题标题】:How to marked checkbox in function jquery如何在函数jquery中标记复选框
【发布时间】:2016-01-18 17:34:58
【问题描述】:

我有一个列表框在视图中。

此列表框使用模板

列表框

<div id="UsersLoad" style="width: 50%">
    @Html.EditorFor(i => i.Users, "UsersForEdit") 
</div>

模板 UserForEdit(部分代码)

@model string[]
@{        
    if (this.Model != null && this.Model.Length > 0)
    {
        foreach(var item in this.Model)
        {
            listValues.Add(new SelectListItem { Selected = true, Value = item, Text = item });
        }
    }
    else
    {
        listValues = new List<SelectListItem>();
    }    
}

<div class="field-@size @css">
    <h3>@Html.LabelFor(model => model):</h3>
    @Html.ListBoxFor(model => model, listValues, new { id = id })
</div>

在另一个视图中,div“用户”被调用。

function LoadUsersCheckBox() {
    $("#UsersLoad").load('@Url.Action("LoadUsers", "User")' + '?idUser=' + idUser);
}

加载用户控制器

public JsonResult LoadUsers(int? idUser)
{
    var users =  Service.GetSystemUsers(idUser);
    var model = users.Select(x => new
                {
                    Value = x,
                    Description = x
                });

    return this.Json(model, JsonRequestBehavior.AllowGet);
}

控制器方法返回我想要的。

但它不是选择列表框中的项目,而是仅用找到的用户的文本覆盖列表框。

如何在LoadUsersCheckBox函数上标记列表框中的项目?

对不起我的英语不好

【问题讨论】:

    标签: javascript c# jquery asp.net-mvc-4 listbox


    【解决方案1】:

    jQuery load() 方法“从服务器加载数据并将返回的 HTML 放入匹配的元素中。”请注意“返回的 HTML”一词。见http://api.jquery.com/load/

    要选择现有项目,您应该尝试使用get() (http://api.jquery.com/jQuery.get/)。在成功回调处理程序中,您需要将返回的数据解析为数组。然后使用迭代器遍历列表框中的项目,如果它们存在于解析的数组中,则将它们标记为选中。比如:

    $.get("action url", function(data) { 
        var users = $.parseJSON(data);
    
        $("#UsersLoad option").each(function() {
            var opt = $(this),
                value = opt.attr("value");
    
            opt.removeAttr("selected");    
    
            if (users.indexOf(value) > -1) {
                opt.attr("selected", "selected");
            }
        });
    });
    

    【讨论】:

    • action url我可以通过如下动作:@Url.Action("LoadUsers", "User")' + '?idUser=' + idUser?
    • 是的,因为这只是呈现一个字符串 - url
    • 我有这个错误SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
    • 如果您需要帮助,请发布您的 JSON 数据样本,尽管这可能完全是另一个问题。无论如何,如果您查看您的 LoadUsers 操作方法,可能应该是users.ToArray()。为什么要返回值和描述都等于 x 的对象数组?这也会使 UI 上的匹配变得更加困难。
    猜你喜欢
    • 2021-12-29
    • 2022-01-07
    • 2017-09-30
    • 2014-10-12
    • 1970-01-01
    • 2013-06-21
    • 2021-11-06
    • 2011-04-14
    • 1970-01-01
    相关资源
    最近更新 更多