2017-12-27 18 views
0

コールバック中にdevexpressグリッドビューへのモデルバインドをコントローラに戻しましたが失敗しました。コールバック中にモデルバインドをdevexpress gridviewに戻してコントローラに戻すにはどうすればいいですか?

モデル

public class UploadExcelError 
{ 
    public int rowNumber { get; set; } 
    public string errorMessage { get; set; } 
} 

public class UploadViewModel 
{ 
    public List<UploadExcelError> UploadExcelErrors { get; set; } 
    public UploadFile UploadFile { get; set; } 
} 

UploadErrorPartial.cshtml

@using ControlTower2.Models 
@model ControlTower2.Models.UploadViewModel 

@if (Model != null) 
{ 
    if (Model.UploadExcelErrors != null) 
    { 

     @Html.DevExpress().GridView(
      settings => 
      { 
       settings.Name = "gridViewExcelError"; 
       settings.CallbackRouteValues = new { Controller = "PurchaseOrder", Action = "FilteringError", xyz = Model }; 
       settings.SettingsBehavior.AllowSort = false; 
       settings.SettingsPager.Mode = GridViewPagerMode.ShowAllRecords; 
       settings.Columns.Add(column => { column.FieldName = "rowNumber"; column.Caption = "Excel Row#"; }); 
       settings.Columns.Add(column => { column.FieldName = "errorMessage"; column.Caption = "Error Message"; }); 
       settings.Settings.ShowHeaderFilterButton = true; 
       var headerFilterMode = GridHeaderFilterMode.List; 
       foreach (GridViewDataColumn column in settings.Columns) 
        column.SettingsHeaderFilter.Mode = headerFilterMode; 
      } 
     ).Bind(Model.UploadExcelErrors).GetHtml() 
    } 
} 

コントローラ

public ActionResult FilteringError(UploadViewModel xyz) 
{ 
    return PartialView("UploadErrorPartial", xyz); 
} 

xyzは上記のコードではnullです。

私も試してみました:

settings.CallbackRouteValues = new { Controller = "PurchaseOrder", Action = "FilteringError", xyz = Model.UploadExcelErrors }; 

public ActionResult FilteringError(List<UploadExcelError> xyz) 
{ 
    UploadViewModel uploadViewModel = new UploadViewModel(); 
    uploadViewModel.UploadExcelErrors = xyz; 
    return PartialView("UploadErrorPartial", uploadViewModel); 
} 

xyzはnullではありませんが、カウントがゼロになります。しかし、それは私があまりにものViewDataを試してみましたUploadErrorPartial.cshtml

上のデータの4行を表示しています

UPDATE - これは動作しませんなぜコントローラからのデータを表示するためにViewDataを転送だけを、それはです。

if (Model.UploadExcelErrors != null) 
{ 
    ViewData["xyz"] = Model; 
    @Html.DevExpress().GridView(
     settings => 
     { 
      settings.Name = "gridViewExcelError"; 
      settings.CallbackRouteValues = new { Controller = "PurchaseOrder", Action = "FilteringError" }; 
      settings.SettingsBehavior.AllowSort = false; 
      settings.SettingsPager.Mode = GridViewPagerMode.ShowAllRecords; 
      settings.Columns.Add(column => { column.FieldName = "rowNumber"; column.Caption = "Excel Row#"; }); 
      settings.Columns.Add(column => { column.FieldName = "errorMessage"; column.Caption = "Error Message"; }); 
      settings.Settings.ShowHeaderFilterButton = true; 
      var headerFilterMode = GridHeaderFilterMode.List; 
      foreach (GridViewDataColumn column in settings.Columns) 
       column.SettingsHeaderFilter.Mode = headerFilterMode; 
     } 
    ).Bind(Model.UploadExcelErrors).GetHtml() 
} 

public ActionResult FilteringError() 
{ 
    UploadViewModel uploadViewModel = (UploadViewModel)ViewData["xyz"]; 
    return PartialView("UploadErrorPartial", uploadViewModel); 
} 

uploadViewModel(UploadViewModel)ViewData["xyz"]からnullを取得します。

答えて

0

私はModel.UploadExcelErrorsを保存するためにセッションを使用し、私の問題を解決します。

関連する問題