我试图将Model.property映射到Select2插件的数据而没有运气,在控制台中不断获得“操作数结果”中的“TypeError:invalid”。
public class Items{
public int id;
public string text;
};
public class Model{
...
public Items[] arr { get; set; }
...
}
模型传递到Razor partialview,我的jsScript做了一些魔术
<script>
$(document).ready(function(){
$('#sel').select2({
data: '@Model.arr',
...
});
</script>
在我在选择框内单击以查看其中的项目之前,所有内容都可以正常显示。然后我得到了我之前提到的控制台错误。
解决我的问题:
// Changed the property of Model class to string.
public class Model{
...
public string arr { get; set; }
...
}
答案 0 :(得分:0)
尝试将您的列表声明为IList,我遇到了类似的问题并且有效:
public IList<Items> arr { get; set; }
您有一个明显的错误,因为您没有指定要在框中显示的ID和文本,例如:
.select2({
data:[
{id:0,text:'item1'},
{id:1,text:'item2'},
{id:2,text:'item3'},
{id:3,text:'item4'},
{id:4,text:'item5'}
]});
所以,你应该可以解决:
<script>
$(document).ready(function(){
$('#sel').select2({
data:{ results: '@Model.arr', text: 'text' }, // 'text' is the name of you model property with your text
formatSelection: format,
formatResult: format
});
function format(item) { return item.text; };
</script>
如果它不起作用,我建议您通过声明像official doc
这样的测试数组来开始调试var data=[{id:0,tag:'enhancement'},{id:1,tag:'bug'},{id:2,tag:'duplicate'},{id:3,tag:'invalid'},{id:4,tag:'wontfix'}];
function format(item) { return item.tag; };
$("#e10_2").select2({
data:{ results: data, text: 'tag' },
formatSelection: format,
formatResult: format
});
如果此代码不起作用,您将知道错误来自Jquery而不是您的代码