将值加载到Kendo MVC Multiselect中
本文关键字:MVC Multiselect Kendo 加载 | 更新日期: 2023-09-27 18:08:56
我试图预加载我的多选值。我似乎找不到使用Ajax作为数据源的示例。下面是我的视图代码:
@(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);
}
这是我的GetAvailableCompanies
方法:
public virtual JsonResult GetAvailableCompanies([DataSourceRequest] DataSourceRequest request)
{
var companies = new Companys();
companies.GetBySqlStatement("SELECT * FROM Company WHERE IsDeleted=0 ORDER BY CompanyName");
return Json(companies, JsonRequestBehavior.AllowGet);
}
我尝试将.Value(new List<int> {1})
添加到多选结束,但它不选择它。我认为问题在于,因为是Ajax,这个值在多选中"还不存在"。有谁知道正确的处理方法吗?我试图寻找在数据绑定后执行的多选事件,也没有运气。
编辑
我的视图使用这个模型:
@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; }
}
变化
.AutoBind(false)
.AutoBind(true)
旁注:.Name("CompanyIds")
选项是不需要的,因为你的使用和表达式(.MultiSelectFor(m => m.CompanyIds)
),无论如何都会添加name="CompanyIds"
属性。