我是ASP.NET mvc和kendo ui框架的新手,并且遇到以下问题:
我在一个带有多选的窗口中有一个部分视图,它从数据库中接收它的值。视图看起来像:
@model SoftwareAdminInterface.Models.Administration.Pattern
<div id="myContentPopupEditRole_div">
@using (Ajax.BeginForm("SetCombi", "Pattern", new { }, new AjaxOptions() { HttpMethod = "post", UpdateTargetId = "myContentPopupEditRole_div" }))
{
<center>
<br />
<table class="table_no_borders">
<tr>
<td style="width: 300px">
@(
Html.Kendo().MultiSelectFor(model => model.RegExId)
.MaxSelectedItems(2)
.Name("RegExID")
.DataTextField("RegExName")
.DataValueField("RegExID")
.Placeholder("Select Patterns...")
.AutoBind(false)
.DataSource(source => {
source.Read(read =>
{
read.Action("GetPatternsForCombi", "Pattern");
})
.ServerFiltering(true);
})
)
</td>
</tr>
</table>
<button class="k-button k-button-icontext k-grid-custom" id="get" type="submit">@Resources.General.BtnSave</button>
</center>
}
</div>
我正在使用一个看起来像这样的模型:
public class Pattern
{
[ScaffoldColumn(false)]
public int RegExID { get; set; }
[Display(Name = "RegEx")]
[Required]
public string RegExName { get; set; }
[UIHint("GridForeignKey")]
public int CategoryID { get; set; }
public string CategoryName { get; set; }
public string ColumnName { get; set; }
public string RegExTable { get; set; }
[UIHint("GridForeignKey")]
public int? TableID { get; set; }
public string Version { get; set; }
public string Description { get; set;
}
在模式控制器中调用的SetCombi函数中的,我只想从多选中接收所选对象的两个ID,但我不知道它们应该如何发送到控制器。
事先得到你的帮助答案 0 :(得分:5)
我认为你有两个选择:
1)将RegExID
更改为string
,然后我相信它们会以逗号分隔的值出现。
2)(更好的选项)添加ViewModel
,其中包含许多与上述Pattern
模型相同的属性。这个的主要区别在于你有
public List<int> RegExIDs { get; set; }
然后在您的控制器中,您将新的ViewModel作为post方法的参数,并根据需要解析列表中的值。