0

我有一个视图 cshtml 文件,我在其中使用 KENDO UI 自动完成小部件。我用它来获取一周中的日子,比如周一、周二等......

现在在我的模型中,我有一个绑定到该控件的字符串数组。当我在自动完成文本框中输入多个值时,我希望将它们作为不同的数组条目填充到模型中,每个条目都有一个来自自动完成文本框的值。更清楚地说,假设我在文本框中键入星期一,星期二,然后我期望一个包含 2 个元素的数组,其中第一个元素的值是星期一,第二个元素的值是星期二。

我们怎样才能做到这一点?现在我得到的数组只有一个元素作为星期一,星期二。 下面是模型和视图的代码。

var daysofweek = [
                            "Monday",
                            "Tuesday",
                            "Wednesday",
                            "Thursday",
                            "Friday",
                            "Saturday",
                            "Sunday",
            ];
$("#daysofweek").kendoAutoComplete({
                dataSource: daysofweek,

                placeholder: "Select days of week...",
                separator: ", "
            });
<label for="daysofweek">Select Days of Week</label>
        <input type="text" id="daysofweek" name="DaysofWeek" /><br />

型号代码

public class Holiday
    {
        public string Name { get; set; }
        public string Description { get; set; }
        public DateTime Date { get; set; }
        public short Type { get; set; }
        public bool AllYears { get; set; }
        public string[] Days { get; set; }
        public string[] DaysofWeek { get; set; }
        public string[] Months { get; set; }
    }
4

1 回答 1

2

实现此目的的一种方法是使用

 public string DaysofWeek { get; set; }

从客户端接收逗号分隔的值,然后在服务器上根据,like拆分值

DaysOfWeekArray = DaysofWeek.split(',');

更新:

另一种有点难看的方法是挂钩提交事件并在发布之前对表单元素进行一些更改

$('form').submit(function () {
    var val = $('input[name="DaysofWeek"]', this).val(); // getting comma seperated values
    var valArray = val.split(','); // creating array
    for (var i = 0; i < valArray.length; i++) {
        // creating dynamic elements with names[i] and value[i]
        $('input').attr('name', 'DaysofWeek[' + i + ']').val(valArray[i]).appendTo(this);
    }
    //removing original element
    $('input[name="DaysofWeek"]', this).remove();
});
于 2013-07-25T07:12:16.293 回答