Не удалось передать данные из контроллера в средство просмотра отчетов

#c# #asp.net-mvc #asp.net-core #asp.net-core-mvc #rdlc

#c# #asp.net-mvc #asp.net-core #asp.net-ядро-mvc #rdlc

Вопрос:

Я создал средство просмотра отчетов в своем проекте .net core. здесь я создаю форму Windows для создания отчета. Я хочу что-то вроде этого: — сначала я собираю свои данные из сеанса, затем эти собранные данные проходят через мой просмотрщик отчетов и хотят показать этот отчет на моем рабочем столе. но когда я попробовал это сделать, я обнаружил много разных ошибок.

вот мой код:-

    public async Task<IActionResult> Print()
        {
            string mimetype = "";
            int extension = 1;
            var path = $"{this._webHostEnvironment.WebRootPath}\Reports\Report1.rdlc";
            Dictionary<string, string> parameters = new Dictionary<string, string>();
          

            List<Shop> shop = HttpContext.Session.Get<List<Shop>>("shop");

            for(int i=0;i<shop.Count();i  )
            {
                parameters.Add("Name", shop[i].Name);
                parameters.Add("Quantity", shop[i].Quantity);
                parameters.Add("ProductId", shop[i].Id);
                parameters.Add("Price", shop[i].Price);


            }

            
            LocalReport localReport = new LocalReport(path);
          

            var result = localReport.Execute(RenderType.Pdf, extension, parameters, mimetype);

            var r = File(result.MainStream, "application/pdf");
            return View(r);

        }

 

Report1.rdlc:-

введите описание изображения здесь

1.Name (Текст, разрешить нулевое значение, Разрешить множественное значение) 2.Идентификатор продукта (Intiger, допускает несколько значений) 3.Цена (Intiger, разрешить несколько значений) 4.(Intiger, Количество (разрешить несколько значений)

Я обнаружил неожиданную ошибку:-

введите описание изображения здесь

но я хочу, чтобы мой отчет о данных отображался на моем рабочем столе. каково же решение проблемы? Я все еще новичок. пожалуйста, помогите.

Комментарии:

1. Я думаю, для начала убрать кавычки из параметров parameters.Add(«Name», «shop[i].Name»); должны быть parameters.Add(«Name», shop[i].Name);

2. в чем теперь ошибка?

3. Я считаю, что вы должны пользоваться этой DataSource собственностью. Вы объявили параметры как a Dictionary , но затем пытаетесь добавить несколько элементов с одинаковыми ключами. Это не сработает. Исследуйте использование DataSource вместо этого.

Ответ №1:

Частью процесса обучения программированию является обучение считыванию ошибок. посмотрите, где указано, что вы не можете добавить одно и то же значение name 2x

Кроме того, вы выполняете асинхронные задачи, но в вашем коде нет ожидания. просто удалите это из заголовка метода

public IActionResult Print() { string mimetype = «»; int extension = 1; var path = $»{это._ Окружающая среда веб-хостинга.WebRootPath}ReportsReport1.rdlc»; Словарь<строка, строка> параметры = новый словарь<строка, строка>();

 List<Shop> shop = HttpContext.Session.Get<List<Shop>>("shop");

for(int i=0;i<shop.Count();i  )
{
    parameters.AddWithValue("Name", shop[i].Name);
    parameters.AddWithValue("Quantity", shop[i].Quantity);
    parameters.AddWithValue("ProductId", shop[i].Id);
    parameters.AddWithValue("Price", shop[i].Price);
}

        
LocalReport localReport = new LocalReport(path);
      

var result = localReport.Execute(RenderType.Pdf, extension, parameters, mimetype);

var r = File(result.MainStream, "application/pdf");
return View(r);
 

}

Комментарии:

1. Не работает. Я скопировал и вставил ваш код. но обнаружил ошибку ниже моих «параметров».

2. какой тип данных я должен использовать для «параметров»?

3. Я предполагаю, что у вас есть SqlParameter, чем вам нужно AddWithValue, docs.microsoft.com/en-us/dotnet/api /…