1

如果有人可以帮助解决我的问题,我将不胜感激。我有一个类型为字段的实体PAYMENT_CURRENCIESstring它应该存储逗号分隔的值,即“USD、EUR、AED”(或任何其他分隔字符)。在我看来:

 @Html.Kendo().MultiSelectFor(model => model.Contract.PAYMENT_CURRENCIES).BindTo(context.Currencies).DataTextField("CODE").DataValueField("CODE").Placeholder("Add currency...")

问题是当我提交表单时,我只收到Controller. 我不想更改字段的数据类型IEnumerable

有没有办法将所有选定的值作为带有一些分隔符的字符串接收?

非常感谢

4

3 回答 3

1

我认为您不能自动将多选输入值转换为单个字符串。

所以你可以做的是:

  • 使用包含列表的 viewModel (ContractViewModel)
  • 或使用 javascript 将您的输入值“转换”为单个字符串,并用您想要的任何分隔符分隔
于 2014-08-06T12:05:34.350 回答
0

向模型添加数组属性:

public string[] PAYMENT_CURRENCIES_LIST
{
    get
    {
        return PAYMENT_CURRENCIES?.Split(',');
    }
    set
    {
        PAYMENT_CURRENCIES = string.Join(",", value);
    }
}

然后在您的视图中使用此属性:

@Html.Kendo().MultiSelectFor(model => model.Contract.PAYMENT_CURRENCIES)...

因此,array-property 映射到 Kendo-Multiselect 并将值转换为原始字段/从原始字段转换。

于 2021-11-29T09:09:14.410 回答
0

我有和你一样的要求,找不到一个像样的解决方案,这就是我解决它的方法:

  • 在您的 ViewModel 中创建一个新属性public List<string> SelectedCurrencies { get; set; }
  • 配置您的 MultiSelect Kendo 助手以绑定到新创建的属性@Html.Kendo().MultiSelectFor(model => model.SelectedCurrencies) .BindTo(context.Currencies) .DataTextField("CODE") .DataValueField("CODE") .Placeholder("Add currency...")
  • 保存:现在,当您点击操作方法时,只需设置逗号分隔字段PAYMENT_CURRENCIES = string.Join(",", viewModel.SelectedCurrrencies);
  • 读书: SelectedCurrencies = PAYMENT_CURRENCIES.Split(',').ToList();
于 2019-08-06T16:20:09.007 回答