C# 未调用kendogrid更新
我在mvc#剑道ui网格中遇到了麻烦。我正在尝试从剑道更新批处理更新方法调用控制器操作我遇到问题我的mvc视图如下。调用“读取”可以正常工作,但在更新(保存所有批处理)时,它不会进入控制器:C# 未调用kendogrid更新,c#,asp.net-mvc,kendo-ui,kendo-grid,C#,Asp.net Mvc,Kendo Ui,Kendo Grid,我在mvc#剑道ui网格中遇到了麻烦。我正在尝试从剑道更新批处理更新方法调用控制器操作我遇到问题我的mvc视图如下。调用“读取”可以正常工作,但在更新(保存所有批处理)时,它不会进入控制器: @(Html.Kendo().Grid(Model.oldList) .Name("grid") .Columns(columns => { columns.Bound(m => m.IsNewStri
@(Html.Kendo().Grid(Model.oldList)
.Name("grid")
.Columns(columns =>
{
columns.Bound(m => m.IsNewString).HeaderHtmlAttributes(new { style = "text-align:center;" }).Title("Data").Encoded(false).Width(80); ;
columns.Bound(m => m.Id).HeaderHtmlAttributes(new { style = "text-align:center;" }).Title("Code").Encoded(false).Width(80);
columns.Bound(m => m.Name).HeaderHtmlAttributes(new { style = "text-align:center;" }).Title("Business Name").Encoded(false).Width(80);
columns.Bound(m => m.Address.Address1).HeaderHtmlAttributes(new { style = "text-align:center;" }).Title("Address1").Encoded(false).Width(80);
columns.Bound(m => m.Address.Address2).HeaderHtmlAttributes(new { style = "text-align:center;" }).Title("Address2").Encoded(false).Width(80);
columns.Bound(m => m.Address.Country).HeaderHtmlAttributes(new { style = "text-align:center;" }).Title("Country").Encoded(false).Width(80);
columns.Command(commands =>
{
commands.Destroy();
}).Title("Commands").Width(200);
})
.ToolBar(toolbar =>
{
//toolbar.Create();
toolbar.Save();
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.DataSource(dataSource =>
dataSource.Ajax()
.Batch(true) // Enable batch updates
.Model(model =>
{
model.Id(m => m.Id);
model.Field(m => m.Id).Editable(false);
})
//.Create(create => create.Action("Products_Create", "Home"))
.Read(read => read.Action("LoadCompareList", "Home", new { clientId = clientid, templateId = templateid }))
.Update(update => update.Action("test", "Home"))
)
.Pageable()
)
我的控制器操作如下:
[HttpPost]
public ActionResult test([DataSourceRequest]DataSourceRequest request,IEnumerable<DetailsDTO> products)
{
return View();
}
[HttpPost]
公共操作结果测试([DataSourceRequest]DataSourceRequest请求,IEnumerable产品)
{
返回视图();
}
但这一行动并不是开火。我不知道发生了什么事。变化
.Update(update => update.Action("test", "Home"))
到
在我的应用程序中执行此操作。我还使用了属性
[AcceptVerbs(HttpVerbs.Post)]
在我的控制器里
补充:
另一个原因可能是模型。我不得不将我的方法改成这样:
public async Task<ActionResult> UpdatePackageList([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<MyClass> products)
public async Task UpdatePackageList([DataSourceRequest]DataSourceRequest请求,[Bind(Prefix=“models”)]IEnumerable产品)
您需要将控制器方法更改为:
[HttpPost]
public ActionResult test([DataSourceRequest]DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<DetailsDTO> products)
{
return View();
}
[HttpPost]
公共操作结果测试([DataSourceRequest]DataSourceRequest请求,[Bind(Prefix=“models”)]IEnumerable产品)
{
返回视图();
}
另外,请确保您已经引用了脚本
kendo.aspnetmvc.min.js
我也遇到了同样的问题,经过一整晚的努力,我意识到kendo要求model.Id值存在且唯一。在我的例子中,这不是真的,因为我是从代码(而不是从db)手动填充网格的,所以我使用了另一个属性,该属性保证具有唯一的Id值,并且它工作正常
Model(model =>
{
model.Id(x => x.MetreId);
}
是的,谢谢大家。当剑道批处理网格的Savechanges按钮被点击时,它点击的是创建操作而不是更新操作。对于剑道批处理网格,创建和更新操作是否不同?请让我知道。谢谢.Create(Create=>Create.Action(“Create”,“Location”))//当用户保存一个新数据项时调用的操作方法。Update(Update=>Update.Action(“Update”,“Location”)//当用户保存一个更新的数据项时调用的操作方法也有同样的问题,并且认为我疯了。网格更新和删除方法正在调用Create方法。当我删除Create方法时,update和delete没有调用任何东西。请参阅下面的答案以获取帮助。在绑定到网格和实体的viewmodel中,我的model.Id不同。在这上面浪费了很多时间。
Model(model =>
{
model.Id(x => x.MetreId);
}