我正在使用MVC Telerik控件和ASP.NET MVC 3 razor视图引擎。我正在努力与电网。我最初发布了一个问题,但没有找到任何运气。它在这里:
Telerik MVC custom AJAX editor template
我的视图接受名为EditGrantApplicationViewModel
的视图模型。此视图上有许多不同类型的控件。文本框,下拉列表和Telerik网格。该系统是一个教育基金系统,在申请贷款时,您必须指定您孩子的详细信息。所以我认为如果我在网格中显示子项,然后可以通过网格添加子项并在我的视图模型中链接到Children propery,那对用户会更好。
public class EditGrantApplicationViewModel
{
public int Id { get; set; }
public string EmployeeNumber { get; set; }
public string Title { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public IEnumerable<Children> Children { get; set; }
}
我将网格绑定到视图模型的Children属性,如下所示:
@(Html.Telerik().Grid(Model.Children)
.Name("grdChildren")
.Columns(column =>
{
column.Bound(x => x.Id);
column.Bound(x => x.FullName);
})
.DataKeys(keys =>
{
keys.Add(x => x.Id);
})
.DataBinding(dataBinding =>
{
dataBinding.Ajax()
.Select("_SelectAjaxEditing", "Grid")
.Insert("_InsertAjaxEditing", "Grid")
.Update("_SaveAjaxEditing", "Grid")
.Delete("_DeleteAjaxEditing", "Grid");
})
.ToolBar(commands => commands.Insert().ButtonType(GridButtonType.Text))
.Editable(editing => editing.Mode(GridEditMode.InForm))
)
我选择AJAX网格的原因是因为当我在网格中单击插入时,整个页面都会得到验证。我不想在这里将子项添加到数据库中,我只想添加到Children属性。
我遇到的问题是编辑器模板。我正在进行内联编辑,我想指定自己的编辑器模板,因为我想在此模板中重新排列控件。如何为EditGrantApplicationViewModel.Children
创建编辑器模板?
我创建了一个名为Children.cshtml
的局部视图,但它没有被拉入我的网格。我被告知让它使用儿童模型,但我如何在局部视图中指定这个,因为我不能有这样的东西:
@model MyProject.ViewModels.EditGrantApplicationViewModel.Children
我有一个例子,但我无法在我的场景中使用它。
我这样做是对的吗?还有什么可以尝试的?
答案 0 :(得分:2)
我得到了解决方案。
我的视图模型中的Children属性是Children对象的列表。我在/Shared/Editor/Templates
中创建了一个名为Children.cshtml
的部分视图。
我认为Children.cshtml应该接收这样的模型:
@model MyProject.ViewModels.EditGrantApplicationViewModel.Children
这是我在@(Html.Telerik().Grid(Model.Children)
中指定的属性,但它应该接收列表由其组成的模型对象,命名为Children对象:
@model MyProject.DomainObjects.Children
现在它正在通过:)