2014-12-15 16 views
6

Tôi đang cố gắng để ràng buộc kendo của tôi multiselect vào một tài sản trong một mô hình bằng cách sử dụng mvc 5 tuy nhiên tất cả tôi nhận được là một danh sách các yếu tố không xác định. Danh sách là chính xác ở cấp độ bộ điều khiển và nhìn vào mã nguồn danh sách là chính xác có nhưng tôi không thể hình dung danh sách.Sử dụng mô hình MVC để điền và xác thực đa lựa chọn kendo?

Điều gì cũng gây nhầm lẫn là có nhiều yếu tố không xác định trong danh sách sau đó sắp xếp danh sách thực tế trong mô hình.

Bất cứ ai có thể giải thích những gì đang diễn ra hoặc chỉ cho tôi cách gỡ lỗi và khắc phục sự cố tôi đang gặp phải.

mẫu:

[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"); 
    } 
} 

Bộ điều khiển:

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

Xem:

@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) 
) 

Trên một hơi separat e lưu ý tại sao xác nhận tiêu chuẩn của tôi bằng cách sử dụng mô hình luôn luôn trả về true ??

Cảm ơn bạn đã được trợ giúp và tư vấn về những vấn đề này.

EDIT Source code

<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> 
+1

.BindTo (SelectList mới ("Giá trị", "Văn bản")) = mô hình trống. Bạn sẽ muốn sử dụng Mô hình ở đây. – Scottie

+0

@Scottie cú pháp cho điều đó là gì? '.BindTo (new SelectList (Model.hierarchy, "Value", "Text")) 'hoặc' .BindTo (Model.hierarchy) ' – SlipperyBalmain

+0

Giả sử Model.hierachy là IEnumerable và có các thuộc tính của Value và Text, tôi tin một trong hai sẽ làm việc. IIRC, bạn có thể cần phải bỏ thứ hai là .BindTo ((IEnumerable) Model.hierachy). – Scottie

Trả lời

2

Thay đổi

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

.DataTextField("Text") 
.DataValueField("Value") 
Các vấn đề liên quan