2015-06-02 78 views
0

我正在嘗試使用Kendo UI構建ASP.NET應用程序,並且當我想要創建,更新和銷燬時遇到問題。沒有錯誤當我建立它。它顯示得很好,當我嘗試添加某些東西時,它會按照它的樣子進行添加。它仍然顯示我剛剛創建的內容。但是當我刷新頁面上的數據不存在。 數據庫沒有什麼變化,沒有添加數據。使用Kendo UI Grid的ASP.NET MVC無法創建更新和銷燬

這裏是我的控制器:

public ActionResult _Index([DataSourceRequest]DataSourceRequest request) 
    { 
     var u = db.Unit.Select(n => new { n.UnitID,n.KodeUnit, n.NamaUnit, n.JumlahPegawai }); 
     DataSourceResult result = u.ToDataSourceResult(request); 
     return Json(result, JsonRequestBehavior.AllowGet); 
    } 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult _Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<Unit> unit) 
    { 
     var results = new List<Unit>(); 

     if (unit != null && ModelState.IsValid) 
     { 
      foreach (var u in unit) 
      { 
       db.Unit.Add(u); 
       db.SaveChanges(); 
      } 
     } 

     return Json(results.ToDataSourceResult(request, ModelState)); 
    } 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult _Update([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<Unit> unit) 
    { 
     if (unit != null && ModelState.IsValid) 
     { 
      foreach (var u in unit) 
      { 
       db.Entry(u).State = EntityState.Modified; 
       db.SaveChanges(); 
      } 
     } 

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

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult _Destroy([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<Unit> unit) 
    { 
     if (unit.Any()) 
     { 
      foreach (var u in unit) 
      { 
       db.Unit.Remove(u); 
       db.SaveChanges(); 
      } 
     } 

     return Json(unit.ToDataSourceResult(request, ModelState)); 
    } 

,這裏是我的模型:

namespace Aplikasi_PKPT.Models 
{ 

public class Unit 
    { 
    [Key] 
    public int UnitID { get; set; } 

    [Display(Name="Kode Unit")] 
    [Required(ErrorMessage="Kode Unit Tidak Boleh Kosong")] 
    public string KodeUnit { get; set; } 

    [Display(Name = "Nama Unit")] 
    [Required(ErrorMessage = "Nama Unit Tidak Boleh Kosong")] 
    [StringLength(60, ErrorMessage = "Nama Unit Tidak Boleh Melebihi 60 Karakter")] 
    public string NamaUnit { get; set; } 

    [Display(Name = "Jumlah Pegawai")] 
    [Required(ErrorMessage = "Jumlah Pegawai Tidak Boleh Kosong")] 
    public int JumlahPegawai { get; set; } 

    public virtual ICollection<Pkpt> Pkpt { get; set; } 
    public virtual ICollection<User> User { get; set; } 
    public virtual ICollection<Korkel> Korkel { get; set; } 
} 

}

,這裏是我的索引視圖:

<div class="container" style="margin-top:100px; padding-bottom:100px;"> 
@(Html.Kendo().Grid<Aplikasi_PKPT.Models.Unit>() 
    .Name("Grid") 
    .DataSource(datasource => datasource 
     .Ajax() 
     .Model(model => model.Id(id => id.UnitID)) 
     .Read(read => read.Action("_Index", "Unit")) 
     .Create(update => update.Action("_Create","Unit")) 
     .Update(update => update.Action("_Update", "Unit")) 
     .Destroy(update => update.Action("_Destroy", "Unit")) 
    ) 
    .Columns(columns => 
     { 
     columns.Bound(u => u.KodeUnit); 
     columns.Bound(u => u.NamaUnit); 
     columns.Bound(u => u.JumlahPegawai); 
     columns.Command(command => { command.Edit(); command.Destroy(); }); 
     } 
    ) 
    .ToolBar(toolbar => { 
     toolbar.Create(); 
    }) 
    .Editable(editable => editable.Mode(GridEditMode.PopUp)) 
    .Sortable() 
    .Filterable() 
    .Events(e => e.Edit("hideIdField")) 

) 
    <script> 
     function hideIdField(e) { 
      $("#UnitID").hide(); 
      $("label[for='UnitID']").hide(); 
     } 
    </script> 
</div> 

任何幫助將apreciated ..

回答

0

爲什麼要綁定IEnumerable?

請嘗試此代碼創建操作。

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult _Create([DataSourceRequest] DataSourceRequest request,Unit unit) 
{ 
    if (unit != null && ModelState.IsValid) 
    { 
     db.Unit.Add(u); 
     db.SaveChanges(); 
    } 

    return Json(results.ToDataSourceResult(request, ModelState)); 
} 

如果這樣做,然後更改更新和刪除操作,類似的方式,如創建操作。

+0

嗨,非常感謝你。我只在Kendo UI網站上的文檔示例中關注。但我不知道是否因爲我使用MVC 5或其他 –