c# - 使用 MVC 模型来填充和验证剑道多选?

标签 c# asp.net-mvc-5 kendo-asp.net-mvc

我正在尝试使用 mvc 5 将我的剑道多选绑定(bind)到模型中的属性,但是我得到的只是一个未定义元素的列表。该列表在 Controller 级别是正确的,查看源代码列表在那里是正确的,但我无法可视化该列表。

同样令人费解的是,列表中有更多未定义的元素,而不是模型中的实际列表。

任何人都可以解释发生了什么或告诉我如何调试和解决我遇到的问题。

型号:

[Required]
public SelectList hierarchy { get; set; }

public virtual IEnumerable<SelectListItem> Hierarchy
{
    get
    {
        var hierarchies = new List<Company>();
        hierarchies = RoleCompanyHelper.GetHierachies();
        var hierarchiesList = new List<SelectListItem>();
        foreach (var hierarchy in hierarchies)
        {
            hierarchiesList.Add(new SelectListItem
            {
                Value = hierarchy.CompanyID.ToString(),
                Text = hierarchy.CompanyName
            });
        }
        return new SelectList(hierarchiesList, "Value", "Text");
    }
}

Controller :

public ActionResult Index()
{
    var vm = new AXCurrentRolesViewModel();
    return View(vm);
}

查看:

@model TelerikMvcApp1.Models.AXCurrentRolesViewModel

@(Html.Kendo().MultiSelect()
    .Name("addRoleCompany_hierarchy")
    .BindTo(new SelectList("Value", "Text"))
    .Value(Model.hierarchy)
    .DataTextField("HierarchyName")
    .DataValueField("HierarchyID")
    .Placeholder("Select Hierarchy...")
    .Filter(FilterType.StartsWith)
    .AutoBind(false)
)

稍微单独说明一下,为什么我使用模型的标准验证总是返回 true?

感谢您就这些问题提供的任何帮助和建议。

编辑 源代码

<select id="addRoleCompany_hierarchy" multiple="multiple" name="addRoleCompany_hierarchy"></select>
    <script>
        jQuery(function(){jQuery("#addRoleCompany_hierarchy").kendoMultiSelect({"dataSource":[{"Text":"All Companies Inc IFRS \u0026 Consol","Value":"55"},
        {"Text":"All Posting Companies (exc POC \u0026 Investments)","Value":"56"},
        {"Text":"BUUK Group Structure","Value":"57"},
        {"Text":"Cardiff Entities","Value":"58"},
        {"Text":"Department","Value":"59"},
        {"Text":"GTC/GPL/ENC/IPL/QPL/EAM","Value":"60"},
        {"Text":"GTC/GUC/CUL","Value":"61"},
        {"Text":"GTCConsoleAndOperationalCompanies","Value":"62"},
        {"Text":"GTCOperationalCompanies","Value":"63"},
        {"Text":"Inexus Companies","Value":"64"},
        {"Text":"Investment Companies Only","Value":"65"}, 
        {"Text":"PIL/POL","Value":"66"}],"dataTextField":"HierarchyName","filter":"startswith","autoBind":fal    se,
        "dataValueField":"HierarchyID","placeholder":"Select Hierarchy..."});});
    </script>

最佳答案

改变

.DataTextField("HierarchyName") 
.DataValueField("HierarchyID") 

.DataTextField("Text") 
.DataValueField("Value")

关于c# - 使用 MVC 模型来填充和验证剑道多选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27487081/

相关文章:

javascript - kendo UI-基于列值的kendo ui网格中的条件列

c# - 从 KeyedCollection 获取键列表的最有效方法是什么?

c# - 谁能给我看一个 MethodImplOptions.ForwardRef 的例子

asp.net-mvc - 如何在单击 Html.ActionLink 时加载部分 View ?

c# - ASP.NET身份用户登录后为空

javascript - 如何默认日期选择器的占位符?

c# - WPF TreeView 和目录树数据绑定(bind)

c# - 同名的静态方法和实例方法?

c# - 将查询结果传递给 View 的最佳实践?

kendo-ui - Kendo UI Grid - 在哪里寻找字体和图标