2017-12-27 25 views
0

Ich möchte die Modellbindung übergeben, um während des Rückrufs die Gridview zurück zum Controller zu entwickeln, aber es ist fehlgeschlagen.Wie wird die Modellbindung gesendet, um während des Rückrufs die Gridview zurück zum Controller zu entwickeln?

Modelle

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() 
    } 
} 

-Controller

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

xyz ist im obigen Code null.

ich auch versucht:

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 ist nicht null, aber Zahl ist gleich Null. Aber es hat zeigen vier Reihen von Daten auf UploadErrorPartial.cshtml

Ich habe versucht, zu Viewdata:

UPDATE - Viewdata nur überträgt Daten von der Steuerung zu sehen, das ist, warum dies nicht funktionieren wird.

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 bekommen null von (UploadViewModel)ViewData["xyz"].

Antwort

0

Ich benutze Sitzung zu speichern Model.UploadExcelErrors und es löst mein Problem.

Verwandte Themen