如何在asp.net mvc中将kendo multiselect值传递给控制器

时间:2015-11-09 14:09:39

标签: asp.net asp.net-mvc

我在控制器中有以下代码。

 companyModel.lstusers = userBL.GetPayrollNotificationUsers();
 companyModel.emails = companyBL.getEmails();

lstusers 电子邮件是模型中的属性。

    public List<UserListModel> lstusers { get; set; }
    public List<EmailModel> emails { get; set; }

我在视野中有两个剑道多重选择。

 @(Html.Kendo().MultiSelect()
             .Name("lstusers")
             .HtmlAttributes(new { style = "width:200px" })
             .AutoClose(false)
             .Placeholder("Select User")
             .BindTo(new SelectList(Model.lstusers, "userId", "name"))
             .Value(new SelectList(Model.lstusers))
 )

 @(Html.Kendo().MultiSelect()
          .Name("emails")
          .HtmlAttributes(new { style = "width:200px" })
          .AutoClose(false)
          .Placeholder("Select emails")
          .BindTo(new SelectList(Model.emails, "EmailAddressId", "EmailAddress"))
          .Value(new SelectList(Model.emails))
 )

在post方法上,我将此视图传递给控制器​​。

  public ActionResult EditCompany(CompanyModel companyModel)

现在,我在公司模型中为lstusers和电子邮件获取空值。任何人都可以帮我解决这个问题吗?

Model Screenshot

2 个答案:

答案 0 :(得分:0)

使用MultiSelectFor代替MultiSelect助手。 MultiSelectFor助手提供了一个真正绑定到您的属性的组件(get和set)。

示例:

@(Html.Kendo().MultiSelectFor(m => m.lstusers)
         .HtmlAttributes(new { style = "width:200px" })
         .AutoClose(false)
         .Placeholder("Select User")
         .BindTo(Model.YourDataSourceForUsersList)

其中YourDataSourceForUsersList表示模型的属性,其中包含多选列表中应该可用的所有值。

答案 1 :(得分:0)

您的列表和所选项目需要单独的属性..为您的模型添加2个属性..

public List<UserListModel> lstusers { get; set; }
public List<EmailModel> emails { get; set; }
public string[] selectedUsers { get; set; }
public string[] selectedEmails { get; set; }

然后使用这些名称作为多重选择的名称

 @(Html.Kendo().MultiSelect()
             .Name("selectedUsers")
             .HtmlAttributes(new { style = "width:200px" })
             .AutoClose(false)
             .Placeholder("Select User")
             .BindTo(new SelectList(Model.lstusers, "userId", "name"))
             .Value(new SelectList(Model.lstusers))
 )

 @(Html.Kendo().MultiSelect()
          .Name("selectedEmails")
          .HtmlAttributes(new { style = "width:200px" })
          .AutoClose(false)
          .Placeholder("Select emails")
          .BindTo(new SelectList(Model.emails, "EmailAddressId", "EmailAddress"))
          .Value(new SelectList(Model.emails))
 )