我有一个看起来像这样的 View :
@model Wellbore
@(Html.Kendo().Grid<WellboreSection>()
.Name("wellboresectiongrid")
.Columns(columns =>
{
columns.Bound(p => p.Name);
columns.Bound(p => p.Lenght);
columns.Bound(p => p.SectionNumber);
columns.Bound(p => p.Volume);
columns.Bound(p => p.HoleDiameter);
columns.Command(command =>
{
command.Edit();
command.Destroy();
}).Width(240);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("WellboreSectionPopupTemplate"))
.Sortable()
.Scrollable()
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(10)
.Events(events => events.Error("KendoGrid.ErrorHandler"))
.Model(model => model.Id(p => p.Id))
.Create(create => create.Action("WellboreSection_Create", "WellboreSection",
new RouteValueDictionary(new Dictionary<string, object>() { { "wellboreId", Model.Id } })))
.Read(read => read.Action("WellboreSection_Read", "WellboreSection",
new RouteValueDictionary(new Dictionary<string, object>() { { "wellboreId", Model.Id } })))
.Update(update => update.Action("WellboreSection_Update", "WellboreSection",
new RouteValueDictionary(new Dictionary<string, object>() { { "wellboreId", Model.Id } })))
.Destroy(destroy => destroy.Action("WellboreSection_Destroy", "WellboreSection",
new RouteValueDictionary(new Dictionary<string, object>() { { "wellboreId", Model.Id } })))
))
还有一个看起来像这样的 WellboreSectionPopupTemplate.cshtml 文件:
@model WellboreSection
blaaaaah!!!
尽管如此,当我在网格中单击编辑时,会显示一个包含对象所有字段的弹出窗口。
真正让我困惑的是,我有另一个网格,如下所示:
<div class="container">
<div class="row">
<div class="col-md-12 sl-table">
@(Html.Kendo().Grid<Customer>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.Name);
columns.Bound(p => p.StreetAddress);
columns.Bound(p => p.ZipCode);
columns.Bound(p => p.City);
columns.Bound(p => p.State);
columns.Bound(p => p.Country);
columns.Bound(p => p.MainPhoneNumber);
columns.Bound(p => p.ContactPerson);
columns.Bound(p => p.ContactPersonEmail);
columns.Bound(p => p.ContactPersonPhone);
columns.Bound(p => p.ContactPersonPhone2);
columns.Command(command =>
{
command.Edit();
command.Destroy();
}).Width(180);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("CustomerPopUpTemplate"))
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(new {style = "height:500px;"})
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(10)
.Events(happening => happening.Error("KendoGrid.ErrorHandler"))
.Model(model => model.Id(p => p.Id))
.Create(update => update.Action("EditingPopup_Create", "CustomerManagement"))
.Read(read => read.Action("EditingPopup_Read", "CustomerManagement"))
.Update(update => update.Action("EditingPopup_Update", "CustomerManagement"))
.Destroy(destroy => destroy.Action("EditingPopup_Destroy", "CustomerManagement"))))
</div>
</div>
</div>
这实际上显示模板 100% 正确。我检查了浏览器,当我单击网格中的编辑或添加新按钮时,它不会调用 WellboreSectionPopupTemplate。我可能会错过什么?
最佳答案
在 MVC 中创建自定义模板时,它们被放置在某个位置。
搜索的位置是:
显示模板路径将相同,只是在路径中使用/DispayTemplates/而不是/EditorTemplates/
模板名称也必须符合约定:
来源:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html
关于c# - Telerik 的 Kendo Grid 组件,指定了 GridEditMode.Popup 和 TemplateName,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24613759/