Magic Suggest - 从MVC模型中预选多个项目

时间:2014-05-29 20:56:59

标签: model-view-controller magicsuggest

我正在寻找一种方法来使用多个值填充Magic Suggest控件。我正在使用ASP.NET MVC,并希望根据模型中的属性设置这些值。

第1部分: Magic建议支持多个值? SOF上的related question地址添加单个值但不是多个。这可能吗?

第2部分:理想情况下,我想以某种方式将控件绑定到MVC模型。如果这不可能,我至少想动态设置预先选择的值。我通过剃刀语法访问模型。与Magic Suggest类似的东西可能允许您设置数据。

 $(function () {
        $('#magicsuggest').magicSuggest({
            data: '/controller/GetValuesJson?mealId=@Model.Id',
            valueField: 'Id',
            displayField: 'Name',
            /* The property below allows pre-selection */
            /* How can I use Razor and set from my MVC model?* /
            value: */ Some Code Here */
        });
    });

编辑:第2部分:尝试通过任何变量设置value属性似乎都失败了。我尝试过各种字符串,引号等无济于事。

 var returnedIds = [1,2]; // Or some variable population 
         $(function () {
            $('#magicsuggest').magicSuggest({
                data: '/controller/GetValuesJson?mealId=@Model.Id',
                valueField: 'Id',
                displayField: 'Name',
                value: [returnedIds]
            });
        });

已解决:感谢@karlipoppins发布的帖子以及一些修修补补。

$(function ()
{
    $.ajax({
            url: '@Url.Action("GetSomeValuesJson")',
            data: { Id: 1},
            type: 'post',
            success: function (returnedVal)
            {
                var ms = $('#magicsuggest').magicSuggest(
                { 
                    data: '/Meal/GetSomeValuesJson?&Id=@Model.Id',
                    valueField: 'Id',
                    displayField: 'Name',
                });

                ms.setValue(returnedVal);
            }
        });
});

1 个答案:

答案 0 :(得分:3)

据我所知,您正在尝试在加载组件时设置多个值。在您的代码中,您使用Id作为值字段,使用Name作为displayField。

这意味着magicsuggest期望data采用

的形式

[{"Id": 1, "Name": "hello"}, {"Id": 2, "Name": "world"}, {"Id": 3, "Name": "no"}]

现在要设置多个值,您可以

1)在js中定义组件时这样做:

    $('#magicsuggest').magicSuggest({
        data: '/controller/GetValuesJson?mealId=@Model.Id',
        valueField: 'Id',
        displayField: 'Name',
        value: [1, 2] // select 'hello', 'world'
    });

2)或者您也可以直接在包含DOM的字段中定义它:

<div id="magicsuggest" value="[1,2]"></div>

然后创建这样的组件:

    $('#magicsuggest').magicSuggest({
        data: '/controller/GetValuesJson?mealId=@Model.Id',
        valueField: 'Id',
        displayField: 'Name'
    });

请参阅此处的两个示例:http://jsfiddle.net/Kpz6y/

干杯