I am using MVC4 with the latest Kendo UI Q2. I am trying to use the mvc wrappers to implement a list view with a view template and an edit template
After editing a listview item using an edit template, I click the save button. The edit template is immediately replaced by the view template before the Create/Update controller action is hit on the server. If the controller action fails some validation I can not show this to the user as the edit template is no longer visible. Is there a way to make the edit template remain open until either the controller action has completed successfully or if the controller action fails validation push the validation errors to the edit template. This would be a fairly typical pattern.
view template
edit template
After editing a listview item using an edit template, I click the save button. The edit template is immediately replaced by the view template before the Create/Update controller action is hit on the server. If the controller action fails some validation I can not show this to the user as the edit template is no longer visible. Is there a way to make the edit template remain open until either the controller action has completed successfully or if the controller action fails validation push the validation errors to the edit template. This would be a fairly typical pattern.
<
div
class
=
"k-toolbar k-grid-toolbar"
>
<
a
id
=
"addRoleButton"
class
=
"k-button k-button-icontext k-add-button"
href
=
"#"
><
span
class
=
"k-icon k-add"
></
span
>Add new Role</
a
>
</
div
>
@(Html.Kendo().ListView<
iProjX.Models.RoleModel
>(Model.Roles)
.Name("rolesListView")
.TagName("div")
.ClientTemplateId("rolesList")
.Editable()
.Pageable()
.DataSource(dataSource => dataSource
.Model(model =>
{
model.Id("RoleId");
model.Field(f => f.ProjectId).DefaultValue(Model.ProjectId);
model.Field(f => f.Title);
model.Field(f => f.Description);;
})
.Events(e => e
.Error("rolesListViewData_error")
.Change("rolesListViewData_change")
.RequestStart("rolesListViewData_requestStart"))
.Create(create => create.Action("createRole", "Project"))
.Read(read => read.Action("getRoles", "Project", new { projectId = Model.ProjectId }))
.Update(update => update.Action("updateRole", "Project"))
.PageSize(30)
)
.Events(e => e
.Change("rolesListView_change")
.Edit("rolesListView_edit")
.DataBound("rolesListView_databound"))
)
view template
//View template
<
script
type
=
"text/x-kendo-template"
id
=
"rolesList"
>
<
div
class
=
"roleView"
>
<
div
> ${Title} </
div
>
<
div
> ${Description} </
div
>
<
div
class
=
"edit-buttons"
>
<
a
class
=
"k-button k-button-icontext k-edit-button"
href
=
"\\#"
><
span
class
=
"k-icon k-edit"
></
span
>Edit</
a
>
<
a
class
=
"k-button k-button-icontext k-delete-button"
href
=
"\\#"
><
span
class
=
"k-icon k-delete"
></
span
>Delete</
a
>
</
div
>
</
div
>
</
script
>
edit template
@model iProjX.Models.RoleModel
<
div
class
=
"roleView"
id
=
"newRoleForm2"
>
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.ProjectId)
@Html.HiddenFor(model => model.RoleId)
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.Title)
</
div
>
<
div
class
=
"editor-field"
>
@Html.TextBoxFor(model => model.Title, new { style = "width:99%", maxlength = 100 })
<
span
data-for
=
"Title"
class
=
"k-invalid-msg"
></
span
>
</
div
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.Description)
</
div
>
<
div
class
=
"editor-field"
>
@Html.TextAreaFor(model => model.Description, new { style = "width:100%; height:100px"})
<
span
data-for
=
"Description"
class
=
"k-invalid-msg"
></
span
>
</
div
>
<
div
class
=
"edit-buttons"
>
<
a
class
=
"k-button k-button-icontext k-update-button"
onclick
=
"updateClick()"
href
=
"\\#"
><
span
class
=
"k-icon k-update"
></
span
>Save</
a
>
<
a
class
=
"k-button k-button-icontext k-cancel-button"
href
=
"\\#"
><
span
class
=
"k-icon k-cancel"
></
span
>Cancel</
a
>
</d