首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于更新调用的Kendo MVC fire创建方法

基于更新调用的Kendo MVC fire创建方法
EN

Stack Overflow用户
提问于 2013-08-01 15:29:20
回答 5查看 4.7K关注 0票数 2

我使用的是带有MVC 4的Kendo,只有一个例外,它工作得很好。

如果我在网格中添加一行,在更新一行之后,它最终会添加一行,而不是更新该行。

我能告诉你的是,如果我按下add,程序就会进入我的MVC控制器中的Create方法,如果我在之后按下行上的更新,那么add就会再次输入Create方法。

但是,如果我只是在启动后直接按下网格中的更新按钮,情况就不是这样了。我所有这些都是通过Ajax调用完成的,因此它与页面有关,而不是在调用之间进行更新。如果我只执行一条命令,然后刷新页面,一切都会很好。此外,我使用实体框架作为ORM。

,这是我的剃刀-视图:

代码语言:javascript
运行
复制
@model IEnumerable<Internal.License.Management.Web.UI.Models.PriceListViewModel>

@{
   ViewBag.Title = "Price List";
}

@(Html.Kendo().Grid<Internal.License.Management.Web.UI.Models.PriceListViewModel>()
.Name("grid")
.Columns(columns =>
    {
        columns.Bound(p => p.Name).Width(120);
        columns.Bound(p => p.Code).Width(180);
        columns.Bound(p => p.Interval).Width(180);
        columns.Bound(p => p.PricePerUnit).Width(200);
        columns.Bound(p => p.Currency).Width(120);
        columns.Command(commands =>
            {
                commands.Edit();
                commands.Destroy();
            }).Width(172);
    })
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource =>
    dataSource.Ajax()
    .PageSize(20)
    .Events(events => events.Error("error_handler"))
    .Model(model => model.Id(p => p.Id))
    .Create(create => create.Action("Create", "PriceList"))
        .Read(read => read.Action("Read", "PriceList"))
        .Update(update => update.Action("Update", "PriceList"))
        .Destroy(destroy => destroy.Action("Delete", "PriceList"))
  ))

这是我的控制器:

代码语言:javascript
运行
复制
public class PriceListController : Controller
{
    public ActionResult List()
    {
        return View("PriceList");
    }

    public ActionResult Read([DataSourceRequest] DataSourceRequest request)
    {
        var model = new DataAdapter().GetAllOptionTemplates();
        var result = model.ToDataSourceResult(request);

        return Json(result);
    }

    [HttpPost]
    public ActionResult Create([DataSourceRequest] DataSourceRequest request,  
                           PriceListViewModel model)
    {
        if (model != null && ModelState.IsValid)
        {
           new DataAdapter().SaveToDatabase(model);
        }

        return Json(new[] { model }.ToDataSourceResult(request, ModelState));
    }

    [HttpPost]
    public ActionResult Update([DataSourceRequest] DataSourceRequest request,   
                           PriceListViewModel model)
    {
        if (model != null && ModelState.IsValid)
        {
           new DataAdapter().UpdateToDatabase(model);
        }

        return Json(ModelState.ToDataSourceResult());
    } 
}

这是我的视图模型

代码语言:javascript
运行
复制
public class PriceListViewModel
{
    public int Id { get; set; }
    public string Currency { get; set; }
    [DisplayName("Option Name")]
    public string Name { get; set; }
    public string Code { get; set; }
    public string Interval { get; set; }
    public decimal PricePerUnit { get; set; }
}
EN

回答 5

Stack Overflow用户

发布于 2014-02-21 15:30:36

我记得以前有过这个问题,但我找不到我是怎么解决的。

将模型保存到数据库后,在从方法中返回模型之前,确保它具有ID。(调试并查看model对象)。如果没有,你可以尝试这样的方法:

代码语言:javascript
运行
复制
model.Id = saveditem.Id;
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
票数 5
EN

Stack Overflow用户

发布于 2013-08-03 07:57:12

我没有找到这个问题的原因,但我写了一个解决办法。

我更改了KendoUI代码部分:

代码语言:javascript
运行
复制
.Events(events => events.Error("error_handler"))

至:

代码语言:javascript
运行
复制
.Events(events => 
            { 
               events.Error("error_handler");
               events.RequestEnd("force_update");
            })

然后在我显示网格的页面中添加了一个javascript。

代码语言:javascript
运行
复制
<script type="text/javascript">
    function force_update(e) {
        if (e.type === "create") {
            location.reload();
        }
     }
</script>
票数 0
EN

Stack Overflow用户

发布于 2013-09-11 12:53:12

相反,可以使用location.reload()编写e.sender.read();

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17998323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档