1

我发现来自剑道网格的发布模型在控制器操作中为空。这里有很多相关的论坛,但没有什么可以用来解决我的问题。

cshtml中的这段代码如下:

@(Html.Kendo().Grid(Model.Skills)
.Name("skillGrid")
.Columns(columns =>
{
columns.Bound(p => p.SkillNameNew).ClientTemplate("#= SkillNameNew #" +
"<input type='hidden' name='Skills[#= index(data)#].SkillNameNew' value='#= SkillNameNew#' />")
.Title("Skill Name");

columns.Bound(p => p.SkillName).Hidden().ClientTemplate("#= SkillName #" +
"<input type='hidden' name='Skills[#= index(data)#].SkillName' value='#= SkillName #' />");

columns.Template(p => p.Proficiency).ClientTemplate("<div id='star' data-text='#: SkillName #' data-score='#: Proficiency #' role='rating' ></div>" +"<input type='hidden' id='prof' name='Skills[#= index(data)#].Proficiency' value='#= Proficiency #' />").Title("Proficiency");

columns.Bound(p => p.YearsOfExp).ClientTemplate("#= (YearsOfExp == null || YearsOfExp == ' ' || YearsOfExp == '') ? '' : kendo.parseInt(YearsOfExp) #" + "<input type='hidden' name='Skills[#= index(data)#].YearsOfExp' value='#= YearsOfExp #' />").Title("Years Of Exp");

columns.Bound(p => p.LastUsedYear).ClientTemplate("#= (LastUsedYear == null || LastUsedYear == '0' || LastUsedYear == '') ? '' : kendo.parseInt(LastUsedYear) #" +"<input type='hidden' name='Skills[#= index(data)#].LastUsedYear' value='#=LastUsedYear#' />").Title("Last Used Year");

columns.Command(command => command.Destroy()).Width(40);})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Events(events => events.DataBound("DataBound"))
.Resizable(re => re.Columns(true))
.Reorderable(reorder => reorder.Columns(false))
.Sortable()
.Scrollable(scroll => scroll.Virtual(true))
.Groupable()
.Filterable()
.HtmlAttributes(new { style = "height:100%;" })
.DataSource(d => d.Ajax()
                   .Batch(true)
                   .ServerOperation(false)
                   .PageSize(Constants.DEFAULT_PAGE_SIZE)
                   .Model(model => model.Id(l => l.SkillName))

控制器操作具有以下签名:

[HttpPost]
public ActionResult UpdateExperience(EditCandidateExperienceViewModel model)
{
------
}

Skills 是“EditCandidateExperienceViewModel”中“List”类型的属性

看起来模型属性名称和网格中绑定的名称是一致的。请让我知道我在这里可能会错过什么。非常感谢任何帮助,因为我对此没有任何想法。

4

2 回答 2

1

您必须从网格中传递模型列表。为此,您必须将列表类型IEnumerableIList列表传递给控制器​​。

于 2013-10-08T08:45:12.020 回答
1

如果SkillsList<T>,则装饰您的操作,例如:

[HttpPost]
public ActionResult UpdateExperience(T model)
{
  ------
}

您正在为网格提供不同的模型并强制发布父模型EditCandidateExperienceViewModel

于 2013-10-08T07:20:19.367 回答