C# 将值加载到剑道MVC Multiselect中
我正在尝试用值预加载multiselect。我似乎找不到一个使用Ajax作为数据源的例子。以下是我的查看代码:C# 将值加载到剑道MVC Multiselect中,c#,asp.net-mvc,kendo-ui,C#,Asp.net Mvc,Kendo Ui,我正在尝试用值预加载multiselect。我似乎找不到一个使用Ajax作为数据源的例子。以下是我的查看代码: @(Html.Kendo().MultiSelectFor(model => model.CompanyIds) .Name("CompanyIds") .AutoClose(false) .AutoBind(false) .Placeholder("Select companies...") .DataTextField("Company
@(Html.Kendo().MultiSelectFor(model => model.CompanyIds)
.Name("CompanyIds")
.AutoClose(false)
.AutoBind(false)
.Placeholder("Select companies...")
.DataTextField("CompanyName")
.DataValueField("CompanyId")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetAvailableCompanies", "Admin");
}).ServerFiltering(true);
})
.HtmlAttributes(new { @class = "form-control" })
)
这是我的控制器代码:
public ActionResult Portals()
{
var portals = new Portals();
portals.GetBySqlStatement("SELECT * FROM Portal WHERE IsDeleted = 0");
var adminPortals = portals.Select(portal => new Infrastructure.ViewModels.AdminPortal
{
PortalName = portal.PortalName,
PortalId = portal.PortalId,
CompanyIds = new List<int> { 1 }
}).ToList();
return View(adminPortals);
}
我尝试将.Value(新列表{1})
添加到multiselect的末尾,但它没有选择它。我认为问题在于,因为它是Ajax,所以multiselect中的值“还不存在”。有人知道正确的处理方法吗?我试图在multiselect上寻找一个在数据绑定后执行的事件,但也没有成功
编辑
我的视图使用此模型:
@model AdminPortal
下面是类的定义:
public class AdminPortal
{
public int PortalId { get; set; }
[Display(Name = "Portal Name")]
[Required(ErrorMessage = "Portal Name is required")]
public string PortalName { get; set; }
public List<int> CompanyIds { get; set; }
}
公共类AdminPortal
{
public int PortalId{get;set;}
[显示(Name=“门户名称”)]
[必需(ErrorMessage=“需要门户名称”)]
公共字符串PortalName{get;set;}
公共列表公司ID{get;set;}
}
更改
.AutoBind(false)
到
旁注:
.Name(“CompanyIds”)
选项不是必需的,因为您的使用和表达式(.MultiSelectFor(m=>m.CompanyIds)
)将添加Name=“CompanyIds”
属性。您的MultiSelectFor()
具有read.Action(“GetAvailableCompanies”,“Admin”)
即调用AdminController
的GetAvailableCompanies()
方法,您没有显示该方法。@StephenMuecke-我认为这与问题无关。但是我编辑了我的问题并添加了代码。我建议除非公司
只包含两个属性(CompanyId
和CompanyName
)返回一个仅包含这两个属性的匿名对象集合,以避免通过网络发送不必要的数据。但这里有点奇怪-Portals()
方法是否返回了您所引用的视图它返回一个集合,因此您的模型是@model List
,这意味着MultiSelectFor(m=>m.CompanyIds)
将无法工作。是您显示的自定义编辑器模板的视图吗?@StephenMuecke-抱歉,我没有显示。看看我的编辑。我提供了类和@model
定义。而且,你是对的。我将创建一个只包含CompanyId
和CompanyName
的类。现在,我只是用这个来测试。
.AutoBind(false)
.AutoBind(true)