2016-07-02 4 views
2

Это мой PartialView:Кендо MultiSelect Не удается прочитать свойство 'значение'

....... 

     <div class="form-group"> 
      @Html.LabelFor(model => model.securities, htmlAttributes: new { @class = "control-label col-md-2"}) 
      <div class="col-md-10"> 

     @(Html.Kendo().MultiSelect() 
     .Name("productMultiSelect") 
     .DataTextField("label") 
     .DataValueField("value")Product to be used by the multiselect as a value. 
     .HtmlAttributes(new { style = "width:350px; height:350px", @id = "prd" }) 
     .Filter(FilterType.Contains) 
     .DataSource(source => 
     { 
      source.Read(read => 
      { 
       read.Action("GetLogin", "IT_Inventory"); 
      }) 
      .ServerFiltering(false); 
     }) 
     .Value(ViewBag.SelectedItem2) 
     .ItemTemplate("<span><h3 style=\"font-size: 1.2em;font-weight: normal;margin: 0 0 1px 0;padding: 0;\">#: data.label #</h3><p style=\"margin:0;padding:0;font-size: .8em; \">#: data.desC#</p></span>") 
       ) 
      </div> 
     </div> 

Моя кнопка:

<button type="button" id="btnSave" class="btn btn-success btn-lg">Save </button> 

Мои JS:

<script> 
    $("#btnSave").click(function (e) { 
     e.preventdefault(); 
     $.ajax({ 
      type: 'POST', 
      url: '@Url.Action("SignIT", "IT_Inventory")', 
      data: JSON.stringify({ productMultiSelect: $("#productMultiSelect").data("kendoMultiSelect").value(), id: $("#id").val(), SomeBooleanProperty: false }), 
      dataType: 'json', 
      contentType: 'application/json', 
      success: function (data) { 
       if (data == true) { 
        $("#onInsert").data("kendoWindow").close(); 
       } 
       else { 
        alert("Error!"); 
       } 
      }, 
      error: function() { 
       alert("An error has occured!!!"); 
      } 
     }); 
    }); 
</script> 

Когда я пытаюсь пост на контроллер I я получаю Uncaught TypeError: Cannot read property 'value' of undefined. Для id и SomeBooleanProperty это нормально. Когда я использую форму отправки, это нормально. Я должен отправить данные в список контроллеров продуктаMultiSelect?

+0

Попробуйте включить функцию js в '.ready()'. Возможно, этот слушатель добавлен до инициализации мультиселектора –

ответ

0

Похоже, что вы не инициализировали вас kendoMultiSelect, или он находится в другом div;

Проверьте, чтобы увидеть его:

console.log($("#productMultiSelect").length); //should be at least 1, if 0, then you initialized kendo in come other div 

и

console.log($("#productMultiSelect").data("kendoMultiSelect")); //should be an object - if undefined, then you have not initialized kendo 
+0

Спасибо. Мой идентификатор MultiSelect - «prd». – MinSIL

0
console.log($("#productMultiSelect").length); - 0 
console.log($("#productMultiSelect").data("kendoMultiSelect")); - undefined 

очень интересно и странно.

Этот PartialView находится в KendoWindow.

Смежные вопросы