2016-05-10 6 views
0

Ich versuche Report Viewer for MVC meinen Winkel App mit ASP.NET MVC 5.ASP.NET MVC PartialView Render AngularJS Mit

REPORT zu integrieren:

Ansicht/Bericht/Index.cshtml

@model JET.Shop.Common.Models.ReportRequestModel 
@using ReportViewerForMvc; 
<div> 
    <div class="row"> 
     <div class="col-md-5"> 
      @using (Html.BeginForm("Index", "Report", FormMethod.Post)) 
      { 
       <div class="form-group"> 
        <label>Start Date</label> 
        @Html.TextBoxFor(model => model.StartDate, string.Format("{0:d}", DateTime.Now), new { @id = "startDate", @class = "datefield", type = "date" }) 
       </div> 
       <div class="form-group"> 
        <label>End Date</label> 
        @Html.TextBoxFor(model => model.EndDate, string.Format("{0:d}", DateTime.Now), new { @id = "endDate", @class = "datefield", type = "date" }) 
       </div> 
      } 
     </div> 
     <div class="col-md-7"> 
      <div class="form-group"> 
       <input type="submit" value="Generate" /> 
      </div> 
     </div> 
    </div> 
    <div class="row"> 
     @Html.ReportViewer(ViewBag.ReportViewer as Microsoft.Reporting.WebForms.ReportViewer) 
    </div> 
</div> 

ReportController

public class ReportController : Controller 
{ 
    // GET: Report 
    public ActionResult Index(ReportType reportType = ReportType.SalesOrderList) 
    { 
     ReportRequestModel model = new ReportRequestModel(); 

     model.Type = reportType; 
     model.StartDate = DateTime.Now; 
     model.EndDate = DateTime.Now; 

     return PartialView(model); 
    } 

    [HttpPost] 
    public ActionResult Index(ReportRequestModel request) 
    { 
     List<ReportParameter> reportParams = new List<ReportParameter>(); 
     ReportViewer reportViewer = new ReportViewer(); 
     reportViewer.ProcessingMode = ProcessingMode.Local; 

     SalesOrdersListDataSet salesOrderDataSet = new SalesOrdersListDataSet(); 
     salesOrderDataSet.SalesOrder.AddSalesOrderRow(Guid.NewGuid(), DateTime.Now, DateTime.Now, DateTime.Now.AddDays(1), 500, 60, 440, "Complete"); 
     salesOrderDataSet.SalesOrder.AddSalesOrderRow(Guid.NewGuid(), DateTime.Now, DateTime.Now, DateTime.Now.AddDays(1), 100, 12, 88, "Complete"); 

     ReportDataSource reportDataSource1 = new ReportDataSource(); 
     reportDataSource1.Name = "Report"; //Name of the report dataset in our .RDLC file 
     reportDataSource1.Value = salesOrderDataSet.SalesOrder; 

     reportViewer.LocalReport.DataSources.Add(reportDataSource1); 
     reportViewer.LocalReport.ReportEmbeddedResource = "JET.Shop.WebApp.Reports.SalesOrderListReport.rdlc"; 
     reportViewer.LocalReport.SetParameters(reportParams); 

     ViewBag.ReportViewer = reportViewer; 

     return PartialView(request); 
    } 
} 

RouteConfig

routes.MapRoute(
       name: "ReportController", 
       url: "Report/Index/{reportType}", 
       defaults: new { controller = "Report", action = "Index", reportType = UrlParameter.Optional } 
      ); 

$ RouteProvider

.when("/Report", { 
        templateUrl: "/Report/Index", 
        controller: "ReportController", 
        loginRequired: true, 
        requiredRoles: ["Admin"] 
       }) 

Ich mag im Grunde versuchen, diesen Report Viewer zu machen, aber ich habe 500 mit dem Erhalten HTTP stecken - Interner Serverfehler auf der Konsole.

Ich habe einige zufällige Versuch und Irrtum und fand heraus, dass, wenn ich meine Bericht/Index.cshtml enthalten nichts als nur HTML (kein Rasierer) es rendert. Aber wenn ich meine @model-Anweisung in die Ansicht einfüge, bekomme ich HTTP 500. Kann mir jemand bei diesem Problem helfen? Haltepunkte zu meinem Controller (GET Index) funktioniert gut.

FYI Ich navigiere zur Berichtseite, indem ich direkt über URL im Browser auf sie zugreife, um nur schnell zu testen.

Irgendwelche Vorschläge, wie soll ich das angehen? Mein Hauptziel ist es, einen ReportViewer anzuzeigen, da ich von dort aus arbeiten kann, sobald er in der Ansicht gerendert wird.

Bericht/Index.cshtml mit einfachen HTML-Code, ..

@*@model JET.Shop.Common.Models.ReportRequestModel 
@using ReportViewerForMvc;*@ 

<div> 
    <div class="row"> 
     <div class="col-md-5"> 
      @*@using (Html.BeginForm("Index", "Report", FormMethod.Post)) 
      { 
       <div class="form-group"> 
        <label>Start Date</label> 
        @Html.TextBoxFor(model => model.StartDate, string.Format("{0:d}", DateTime.Now), new { @id = "startDate", @class = "datefield", type = "date" }) 
       </div> 
       <div class="form-group"> 
        <label>End Date</label> 
        @Html.TextBoxFor(model => model.EndDate, string.Format("{0:d}", DateTime.Now), new { @id = "endDate", @class = "datefield", type = "date" }) 
       </div> 
      }*@ 
      THIS WORKS FINE! 
     </div> 
     <div class="col-md-7"> 
      <div class="form-group"> 
       <input type="submit" value="Generate" /> 
      </div> 
     </div> 
    </div> 
    <div class="row"> 
     @*@Html.ReportViewer(ViewBag.ReportViewer as Microsoft.Reporting.WebForms.ReportViewer)*@ 
    </div> 
</div> 

Antwort

0

einfach funktioniert diese Frage zu schließen,

landete ich den Bericht nicht Betrachter überhaupt verwendet wird. Ich habe gerade einen MVC-Controller erstellt, der aus einem Crystal Report ein Excel/PDF generiert.

Verwandte Themen