我有一个Telerik网格。在网格工具栏中,我有一个自定义按钮,我想打开一个弹出窗口来插入新记录。
我在Window-Example中遵循了带有服务器/客户端验证的弹出表单,并对其进行了修改以适应我的场景。但是,运行应用程序会生成以下错误
传递到字典中的模型项的类型为"Telerik。网状物Mvc。GridModel",但此字典需要一个模型项类型为"Web"。模型。OwnerViewModel"。
以下是托管网格的视图的摘录
@using Telerik.Web.Mvc.UI
@{
ViewBag.Title = "Owner Listing";
}
@model Web.Models.OwnerViewModel
@{ Html.Telerik().Window()
.Name("Window")
.Title("Add New Owner")
.Content(@<text>
@using (Html.BeginForm("Create", "Owner", FormMethod.Post, new { id = "AddNewOwnerForm" }))
{
@Html.LabelFor(model => model.FullName)
@Html.EditorFor(model => model.FullName)
@Html.LabelFor(model => model.Telephone)
@Html.EditorFor(model => model.Telephone)
<div class="form-actions">
<button type="submit" class="t-button t-state-default">Save</button>
</div>
}
</text>)
.Width(400)
.Draggable(true)
.Modal(true)
.Visible(false)
.Render();
}
<div>
@(Html.Telerik().Grid<Web.Models.OwnerViewModel>()
.Name("Vehicles")
.ToolBar(commands => commands.Custom()
.Action("Create", "Owner")
.Name("btnAddNewOwner")
.Text("Add Vehicle")
.HtmlAttributes(new { id = "btnAddNewOwner" })
)
.DataKeys(keys => keys.Add(v => v.Id).RouteKey("Id"))
.Columns(columns =>
{
columns.Command(cmd =>
{
cmd.Edit().ButtonType(GridButtonType.Image);
}).Width(40);
columns.Bound(v => v.FullName).Width(150);
columns.Bound(v => v.Telephone).Width(150);
columns.Bound(v => v.Address).Width(150);
})
.DataBinding(dataBinding => dataBinding.Ajax()
.Select("Index", "Owner")
.Update("Edit", "Owner"))
.Pageable(paging => paging.PageSize(10))
.Scrollable()
.Filterable()
.Sortable()
)
)
</div>
以下是电网的控制器代码
[GridAction]
public ActionResult Index()
{
var owners = _ownerService.ListAll();
return View(new GridModel( owners ));
}
下面是创建的控制器代码
public PartialViewResult Create()
{
SetSelectionLists();
var model = new OwnerViewModel();
return PartialView( "Create", model);
}
我在stackoverflow上看到过类似的问题,但non似乎解决了我面临的问题。如果有任何帮助或指引正确的方向,我将不胜感激。
您需要将视图创建的模型设置为GridModel类型,并将其返回到GridModel