Kendo ui 剑道网格与自定义弹出编辑器
我以为一切正常,但当我点击更新按钮时,意识到来自自定义编辑器的值没有传递到控制器。它是“选择栅格”行中的原始值 我的网格定义如下,并正确加载数据Kendo ui 剑道网格与自定义弹出编辑器,kendo-ui,kendo-grid,mvc-editor-templates,Kendo Ui,Kendo Grid,Mvc Editor Templates,我以为一切正常,但当我点击更新按钮时,意识到来自自定义编辑器的值没有传递到控制器。它是“选择栅格”行中的原始值 我的网格定义如下,并正确加载数据 @(Html.Kendo().Grid<ET.Data.Models.TowTicketModel>() .Name("gridTicketStatus") .DataSource(dataSource => dataSource .Ajax()
@(Html.Kendo().Grid<ET.Data.Models.TowTicketModel>()
.Name("gridTicketStatus")
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => {
model.Id(p => p.TicketId);
model.Field(p => p.TicketId).Editable(false);
model.Field(c => c.CreatedDateTime).Editable(false);
model.Field(c => c.AssignedTo).Editable(false);
model.Field(c => c.TicketType).Editable(false);
model.Field(c => c.Customer.Name).Editable(false);
model.Field(c => c.Description).Editable(false);
// model.Field("TicketStatus", typeof(TowTicketStatusModel));
})
.Read(read => read.Action("GetTowTickets", "TowDriver"))
.Update(up => up.Action("UpdateTowDriverTickets", "TowDriver"))
)
.Columns(columns =>
{
columns.Bound(ticket => ticket.TicketId).Title("Id");
columns.Bound(ticket => ticket.CreatedDateTime).Title("Date").Width("120px").Format("{0:MM/dd/yyyy}")
.HeaderHtmlAttributes(new
{
//style = "white-space: nowrap; text-overflow: ellipis;"
@class = "k-grid td"
});
columns.Bound(ticket => ticket.Customer.Name)
.HeaderHtmlAttributes(new
{
//style = "white-space: nowrap; text-overflow: ellipis;"
@class = "k-grid td"
});
columns.Bound(p => p.TicketType)
.ClientTemplate("#: data.TicketType ? data.TicketType.DisplayValue : '' #")
.Title("Type")
.HeaderHtmlAttributes(new
{
//style = "white-space: nowrap; text-overflow: ellipis;"
@class = "k-grid td"
});
columns.Bound(p => p.TicketStatus)
.ClientTemplate("#: data.TicketStatus ? data.TicketStatus.DisplayValue : '' #")
.Title("Status")
.HeaderHtmlAttributes(new
{
//style = "white-space: nowrap; text-overflow: ellipis;"
@class = "k-grid td"
});
columns.Bound(ticket => ticket.Description).HeaderHtmlAttributes(new
{
//style = "white-space: nowrap; text-overflow: ellipis;"
@class = "k-grid td"
})
.HtmlAttributes(new { title = "#= Description #" });
columns.Bound(p => p.AssignedTo)
.ClientTemplate("#: data.AssignedTo ? data.AssignedTo.FullName : '' #")
.Title("AssignedTo")
.HeaderHtmlAttributes(new
{
//style = "white-space: nowrap; text-overflow: ellipis;"
@class = "k-grid td"
});
columns.Bound(ticket => ticket.CreatedBy.FullName).Title("CreatedBy").HeaderHtmlAttributes(new
{
//style = "white-space: nowrap; text-overflow: ellipis;"
@class = "k-grid td"
});
columns.Command(cmd => cmd.Edit());
//columns.Bound(ticket => ticket.AssignedTo.FullName).Title("AssignedTo");
// columns.Bound(ticket => product.UnitsInStock);
})
.Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("TowTicketDriverEditor"))
// .ToolBar(tb => tb.Save)
.Pageable()
.Sortable()
)
@(Html.Kendo().Grid())
.名称(“gridTicketStatus”)
.DataSource(DataSource=>DataSource
.Ajax()
.Model(Model=>{
Id(p=>p.TicketId);
model.Field(p=>p.TicketId).可编辑(false);
model.Field(c=>c.CreatedDateTime).Editable(false);
model.Field(c=>c.AssignedTo).Editable(false);
model.Field(c=>c.TicketType).可编辑(false);
model.Field(c=>c.Customer.Name).可编辑(false);
model.Field(c=>c.Description).可编辑(false);
//model.Field(“TicketStatus”,typeof(TowTicketStatusModel));
})
.Read(Read=>Read.Action(“GetTowTickets”、“TowDriver”))
.Update(up=>up.Action(“UpdateTowDriverTickets”、“TowDriver”))
)
.列(列=>
{
columns.Bound(ticket=>ticket.TicketId).Title(“Id”);
columns.Bound(ticket=>ticket.CreatedDateTime).Title(“日期”).Width(“120px”).Format(“{0:MM/dd/yyyyy}”)
.HeaderhTMlat贡品(新)
{
//style=“空白:nowrap;文本溢出:ellipis;”
@class=“k-grid td”
});
columns.Bound(票证=>ticket.Customer.Name)
.HeaderhTMlat贡品(新)
{
//style=“空白:nowrap;文本溢出:ellipis;”
@class=“k-grid td”
});
columns.Bound(p=>p.TicketType)
.ClientTemplate(“#:data.TicketType?data.TicketType.DisplayValue:”)
.标题(“类型”)
.HeaderhTMlat贡品(新)
{
//style=“空白:nowrap;文本溢出:ellipis;”
@class=“k-grid td”
});
columns.Bound(p=>p.TicketStatus)
.ClientTemplate(“#:data.TicketStatus?data.TicketStatus.DisplayValue:”)
.头衔(“身份”)
.HeaderhTMlat贡品(新)
{
//style=“空白:nowrap;文本溢出:ellipis;”
@class=“k-grid td”
});
columns.Bound(ticket=>ticket.Description).HeaderHtmlAttributes(新)
{
//style=“空白:nowrap;文本溢出:ellipis;”
@class=“k-grid td”
})
.HtmlAttributes(新的{title=“#=说明#”});
columns.Bound(p=>p.AssignedTo)
.ClientTemplate(“#:data.AssignedTo?data.AssignedTo.FullName:”)
.所有权(“转让给”)
.HeaderhTMlat贡品(新)
{
//style=“空白:nowrap;文本溢出:ellipis;”
@class=“k-grid td”
});
columns.Bound(ticket=>ticket.CreatedBy.FullName).Title(“CreatedBy”).HeaderHtmlAttributes(新
{
//style=“空白:nowrap;文本溢出:ellipis;”
@class=“k-grid td”
});
Command(cmd=>cmd.Edit());
//columns.Bound(ticket=>ticket.AssignedTo.FullName).Title(“AssignedTo”);
//columns.Bound(票证=>product.UnitsInStock);
})
.Editable(Editable=>Editable.Mode(GridEditMode.PopUp).TemplateName(“TowTicketDriverEditor”))
//.ToolBar(tb=>tb.Save)
.Pageable()
.Sortable()
)
我的编辑器包含以下内容
> @model ET.Data.Models.TowTicketModel
>
>
> @Html.HiddenFor(model => model.TicketId)
>
> <div class="container">
> <div class="row">
>
> <div>
> @Html.LabelFor(model => model.TicketId)
> </div>
>
> <div>
> @Html.LabelFor(model => model.Customer.Name)
>
> @Html.EditorFor(model => model.Customer.Name, new { htmlAttributes = new { disabled = "disabled", @readonly = "readonly" }
> })
> </div>
> <div>
> @(Html.Kendo().DropDownListFor(m => m)
> .Name("TicketStatus")
>
> .DataValueField("TicketId")
> .DataTextField("DisplayValue")
> .Value("StatusId") // .Value(Model.StatusId)
> .DataSource(source =>
> {
> source.Read("GetTowTicketStatuses", "TowDriver")
> .ServerFiltering();
> }))
> </div>
>
> </div> </div>
@model ET.Data.Models.TowTicketModel
>
>
>@Html.HiddenFor(model=>model.TicketId)
>
>
>
>
>
>@Html.LabelFor(model=>model.TicketId)
>
>
>
>@Html.LabelFor(model=>model.Customer.Name)
>
>@Html.EditorFor(model=>model.Customer.Name,new{htmlAttributes=new{disabled=“disabled”,@readonly=“readonly”}
> })
>
>
>@(Html.Kendo().DropDownListFor(m=>m)
>.名称(“票务状态”)
>
>.DataValueField(“TicketId”)
>.DataTextField(“显示值”)
>.Value(“StatusId”)/.Value(Model.StatusId)
>.DataSource(source=>
> {
>source.Read(“GetTowticketStatus”、“TowDriver”)
>.ServerFiltering();
> }))
>
>
>
最后,我的控制器:
public async Task<ActionResult> UpdateTowDriverTickets([DataSourceRequest] DataSourceRequest request,
TowTicketModel updated)
{
if (updated != null && ModelState.IsValid)
{
await _towProvider.UpdateTowTicketAsync(new UpdateTowTicketRequest(updated));
}
return Json(ModelState.ToDataSourceResult());
}
public异步任务UpdateTowDriverTickets([DataSourceRequest]DataSourceRequest请求,
TowTicketModel(已更新)
{
if(已更新!=null&&ModelState.IsValid)
{
等待提供程序.UpdateTowTicketAsync(新的UpdateTowTicketRequest(更新));
}
返回Json(ModelState.ToDataSourceResult());
}
再次加载网格,单击编辑按钮,弹出窗口打开,dropdownlist通过ajax调用正确填充
但是,我从下拉列表中选择并单击update,UpdateTowDriverTickets的模型参数没有从编辑器下拉列表中选择的值
我确实有一把外国钥匙