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を取得します。