2012-12-06 16 views
8

上では動作しません私はMVCモデルバインディングは、MVCプロジェクトで剣道グリッド

<%: Html.Kendo().Grid<Milestone>() 
       .Name("MilestonesGrid") 
       .Columns(columns => 
       { 
        columns.Bound(p => p.ContractMilestoneID).Hidden(); 
        columns.Bound(p => p.MilestoneSN).Title("Κωδικός οροσήμου"); 
        columns.Bound(p => p.EstimatedDate).Title("Εκτιμώμενη ημερομηνία"); 
        columns.Bound(p => p.RealDate).Title("Πραγματική ημερομηνία"); 
        columns.Bound(p => p.MilestoneDescription).Title("Περιγραφή"); 
        columns.Bound(p => p.Payment).Title("Πληρωμή"); 
        columns.Bound(p => p.PaymentRate).Title("Ποσοστό πληρωμής"); 
        columns.Bound(p => p.IsCompleted).Title("Έχει ολοκληρωθεί"); 
        columns.Command(command => 
         { 
          command.Edit() 
            .Text("Επεξεργασία") 
            .CancelText("Ακύρωση") 
            .UpdateText("Αποθήκευση"); 

          command.Destroy() 
            .Text("Διαγραφή"); 
         }); 
       }) 
       .ToolBar(toolbar => toolbar.Create().Text("Προσθήκη νέου οροσήμου")) 
       .Editable(editable => editable.Mode(GridEditMode.InLine)) 
       .Sortable() 
       .Pageable() 
       .Filterable() 
       .Resizable(resize => resize.Columns(true)) 
       .DataSource(dataSource => dataSource 
        .Ajax() 
        .ServerOperation(true) 
        .Model(model => model.Id(o => o.ContractMilestoneID)) 
        .Model(model => model.Field(o => o.MilestoneSN)) 
        .Model(model => model.Field(o => o.EstimatedDate)) 
        .Model(model => model.Field(o => o.RealDate)) 
        .Model(model => model.Field(o => o.MilestoneDescription)) 
        .Model(model => model.Field(o => o.Payment)) 
        .Model(model => model.Field(o => o.PaymentRate)) 
        .Model(model => model.Field(o => o.IsCompleted)) 
        .Batch(true) 
        .Create(create => create.Action("CreateMilestone", "Milestones")) 
        .Read(read => read.Action("DetailsJson", "Milestones", 
         new { id = ViewBag.ID })) 
        .Update(update => update.Action("UpdateMilestone", "Milestones")) 
        .Destroy(delete => delete.Action("DeleteMilestone", "Milestones"))) 
%> 

剣道グリッドを使用して、次のビューを持っている。また、私は剣道に新しいエントリを保存したいコントローラーを持っていますグリッド。

[HttpPost] 
    public ActionResult CreateMilestone([DataSourceRequest] DataSourceRequest request, 
     Milestone milestone) 
    { 
     if (milestone != null && ModelState.IsValid) 
     { 
      using (TADCEntities database = new TADCEntities()) 
      { 
       tblSymvaseisOrosima item = new tblSymvaseisOrosima 
       { 
        fldEstimatedDate = milestone.EstimatedDate, 
        fldIsCompleted = milestone.IsCompleted, 
        fldMilestoneDescription = milestone.MilestoneDescription, 
        fldMilestoneSN = milestone.MilestoneSN, 
        fldPayment = milestone.Payment, 
        fldPaymentRate = milestone.PaymentRate, 
        fldRealDate = milestone.RealDate, 
        fldStoixeioYpoergouID = milestone.ElementSubProjectID 
       }; 

       database.tblSymvaseisOrosima.Add(item); 
       database.SaveChanges(); 

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

     return View(); 
     // should also return json 
    } 

問題は、私が保存グリッドとプレスに新しいエントリを作成するときに、私はデータを入力した場合でも、マイルストーンタイプ(コントローラ内のパラメータが)常にnullであるということです。入力したデータをマイルストーンパラメータに渡すために何をすべきでしょうか?私はmodelsプレフィックスで掲示されるフィドラーのパラメータで見たように、あなたは、事前

+1

は、サーバーに投稿されたものを開発者向けツールでチェックしていますか? –

+1

@BehnamEsmailiこれは私がFiddlerで見たものです。 http://imageshack.us/f/846/28278518.png/ –

+1

FormCollection型のパラメータをアクション内に配置し、期待するキーがあるかどうかを確認します。 –

答えて

11

に感謝ので、あなたはこのようにそれらにアクセスする必要があります。

public ActionResult CreateMilestone([DataSourceRequest] DataSourceRequest request, 
    [Bind(Prefix="models")] List<Milestone> milestons) 
{ 
    Milestone milestone = milestons[0]; 
    . 
    . 
    . 
} 
+3

はいこれが正しいです。そして、グリッドの '.Batch(true)'設定のために必要です。その解決策は、[剣道のマニュアル]にも記載されています。(http://docs.kendoui.c​​om/getting-started/using-kendo-with/aspnet-mvc/helpers/grid/batch-editing) – nemesv

関連する問題