Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何返回foreach循环中的所有数据_C#_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

C# 如何返回foreach循环中的所有数据

C# 如何返回foreach循环中的所有数据,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我在.NETCore中有一个生成ID卡的项目。当我为一个学生打印身份证时,一切正常,但我在打印多张身份证时遇到问题 我的控制器中的get方法如下: [HttpGet] [AllowAnonymous] public IActionResult BulkCard() { //values = ViewBag.Cards; var values = (object[])TempData["students"]; //This retrieves all student

我在.NETCore中有一个生成ID卡的项目。当我为一个学生打印身份证时,一切正常,但我在打印多张身份证时遇到问题

我的控制器中的get方法如下:

[HttpGet]
[AllowAnonymous]
public IActionResult BulkCard()
{
        //values = ViewBag.Cards;
        var values = (object[])TempData["students"]; //This retrieves all students that has been selected to print their ID Card
        ViewBag.Cards = values.ToArray();
        var designtemplate = _context.Settings.First();

        if (designtemplate.CardTemplate == 1)
        {
            ViewBag.Template = "1";
        }
        else if (designtemplate.CardTemplate == 2)
        {
            ViewBag.Template = "2";
            ViewBag.TemplateView = "This is template 2";
        }
        else if (designtemplate.CardTemplate == 3)
        {
            ViewBag.Template = "3";
            ViewBag.TemplateView = "This is template 3";
        }
        else
        {
            return RedirectToAction("CardSettings", "Settings");
        }

        var model = new ModelClasses();

        foreach (var item in values)
        {
            model.Students = _context.Students.ToList();
            model.Student = _context.Students.Include(c => c.Department).Include(c => c.Department.Faculty).Include(c => c.ProgramType).Include(c => c.ClassLevels).Include(c => c.Session).ToList().FirstOrDefault(c => c.Id == Convert.ToInt32(item));
            ViewBag.Students = _context.Students.Include(c => c.Department).Include(c => c.Department.Faculty).Include(c => c.ProgramType).Include(c => c.ClassLevels).Include(c => c.Session).ToList().Where(c => c.Id == Convert.ToInt32(item)).ToList();
            var surname = model.Student.Surname;
            var firstname = model.Student.FirstName;
            var middleName = model.Student.MiddleName[0];
            var fullname = surname + " " + firstname + " " + middleName + ".";

            ViewBag.FullName = fullname;
            ViewBag.MatricNumber = model.Student.MatricNumber;
            ViewBag.Department = model.Student.Department;
            ViewBag.Faculty = model.Student.Faculty;
            ViewBag.Passport = "/Uploads" + "/Passport/" + model.Student.Passport;
            ViewBag.Signature = "/Uploads" + "/Signature/" + model.Student.Signature;

            var qrdata = model.Student.QRCodeData.ToString().Replace("/", "");

            using (MemoryStream ms = new MemoryStream())
            {
                QRCodeGenerator qrGenerator = new QRCodeGenerator();
                QRCodeData qrCodeData = qrGenerator.CreateQrCode(qrdata, QRCodeGenerator.ECCLevel.Q);
                QRCode qrCode = new QRCode(qrCodeData);

                using (Bitmap bitMap = qrCode.GetGraphic(20))
                {
                    bitMap.Save(ms, ImageFormat.Png);
                    ViewBag.QRCodeImage = "data:image/png;base64," + Convert.ToBase64String(ms.ToArray());
                }
            }
        }

        return View(model);
 }
我的看法如下:

@foreach (var item in ViewBag.Students)
{
    @if (ViewBag.Template == "1")
    {
        <table>
            <tr>
                <td>
                    BULK CARD PRINTING
                    <img src="@ViewBag.QRCodeImage" class="qrcode">
                </td>
            </tr>
        </table>
        @*<table>
            <tr>
                <td>
                    <div class="wrapper">
                        <div class="container">
                            <div style="position: absolute;color: lightgray;opacity: 0.05;font-size: 3em;width: 50%;top: 25%; left: 80px;text-align: center;z-index: 0;background-attachment: fixed;"><img src="~/img/fedpolel-Logo.png" width="150" /></div>
                            <img src="~/Uploads/Passport//@item.Passport" alt="" class="profile-img">

                            <img src="~/img/fedpolel-Logo.png" class="logo" />

                            <img src="@ViewBag.QRCodeImage" class="qrcode">

                            <div class="content">
                                <table>
                                    <tr>
                                        <td>
                                            <div class="title">
                                                <h4>THE FEDERAL POLYTECHNIC</h4>
                                                <span>ILE OLUJI, ONDO STATE.</span>

                                            </div>

                                            <div class="sub-content">
                                                <center>
                                                    <h1>@item.FullName</h1>
                                                </center>
                                                <p>@item.MatricNumber</p>
                                            </div>
                                            <div class="vr"></div>
                                            <div class="vr-right"></div>
                                            <div class="data">
                                                <div class="inner-data">
                                                    <span>Gender</span>
                                                    <p>@item.Gender<p />
                                                    <br>
                                                    <span>Session</span>
                                                    <p class="session">@item.Session.SessionName</p>
                                                </div>
                                                <div class="inner-data2">
                                                    <span>Level</span>
                                                    <p>@item.ClassLevels.ClassLevel</p>
                                                    <span>Department</span>
                                                    <p>@item.Department.DepartmentName</p>
                                                    <span>Faculty</span>
                                                    <p>@item.Department.Faculty.FacultyName</p>
                                                </div>
                                                <div class="inner-data3">
                                                    <div class="hr"></div>
                                                    <p><img src="@ViewBag.Signature" width="50" /></p>
                                                    <div class="paragra">Signature</div>
                                                </div>
                                            </div>
                                        </td>
                                    </tr>
                                </table>


                            </div>
                        </div>
                    </div>
                </td>
            </tr>
        </table>*@
    }
    else if (ViewBag.Template == "2")
    {
        @ViewBag.TemplateView
    }
    else if (ViewBag.Teplate == "3")
    {
        @ViewBag.TemplateView
    }
    else
    {
        @ViewBag.NoTemplateView
    }
}
@foreach(ViewBag.Students中的变量项)
{
@如果(ViewBag.Template==“1”)
{
批量制卡
@*
联邦理工学院
奥卢吉岛,昂多州。
@item.FullName
@item.MatricNumber

性别 @项目.性别


一场

@item.session.SessionName

水平仪 @item.ClassLevels.ClassLevel

部门 @item.Department.Department名称

官能 @item.Department.Faculty.FacultyName

签名 *@ } else if(ViewBag.Template==“2”) { @ViewBag.TemplateView } 否则如果(ViewBag.Teplate==“3”) { @ViewBag.TemplateView } 其他的 { @ViewBag.NoTemplateView } }
此代码仅返回最后一个学生的数据


我的挑战:如果我预选了5名学生,我想返回这5名学生的数据。请问,我该如何实现这一点?

之所以发生这种情况,是因为您总是在每个循环迭代中将
ViewBag.Students
设置为新列表(它只包含一条记录,因为您是按Id筛选的)

初始化
ViewBag.Students
循环外部(例如
ViewBag.Students=new List
,循环内部只需从数据库中添加已读学生(
model.student

e、 g:

另外,尝试在for循环之外填充
model.Students
,因为当前您在每次迭代(
model.Students=\u context.Students.ToList()
)时都会对数据库进行不必要的访问。在每次for循环迭代中,您都会将完整的Students读取到model属性,这是多余的。一次就足够了


我还认为您不需要将ViewBag的属性设置为模型的属性。只需传递一个模型(可能添加一些所需的属性)查看并读取模型中的数据。

好的,谢谢。我需要更改视图中的任何内容吗?如果您使用模型而不是ViewBag,您可能需要更改每个循环以读取模型中的数据,而不是ViewBag。此外,如果我的答案帮助您解决了问题,请将其标记为已接受的答案。但是,尚未实现这一点,您该怎么做我开始动态生成二维码图像?您可以向模型添加属性以包含二维码,就像现在使用ViewBag一样。然后从模型而不是ViewBag读取其值。我不想将其保存到数据库中
ViewBag.Students.Add(model.Student);