뷰 내의 루프에서 쿼리 메서드 호출

user1356029

나는 ASP.NET MVC를 사용하는 것이 상대적으로 처음이므로 여기서 간단한 것을 간과하고 있다면 내 무지를 용서하십시오. 그러나 공정한 연구 끝에 여전히 확실한 해결책을 찾지 못했습니다.

내 컨트롤러의 프로젝트 목록을 IEnumerable Project 유형의 뷰로 전달하고 있습니다.

IEnumerable<Project> Projects = ViewBag.Projects;

그런 다음 각 프로젝트를 반복하고 정보로 Datatable을 채 웁니다. 유일한 문제는 루프 내에서 두 번째 DB 쿼리를 만들어야하는 Datatable의 두 열에 대한 데이터를 가져 오는 것입니다.

특정 프로젝트와 관련된 아카이브 목록을 반환해야하는 내 저장소에서 메서드를 호출하기 위해 @functions 섹션을 만들었습니다.

보기 상단

@using stwintranet.Areas.PQP.Models
@model Year

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
    IEnumerable<Project> Projects = ViewBag.Projects;
    IEnumerable<Year> Years = ViewBag.Years;
    String year = ViewBag.URLYear;
} 
@functions
{
    private readonly IArchive_ElectronicRepository Archive_ElectronicRepository;

    public IEnumerable<Archive_Electronic> GetListArchives(int pid)
    {
        return Archive_ElectronicRepository.GetListArchives(pid);
    }
} 

메인보기 :

<table id="dt_basic" class="table table-striped table-bordered table-hover" width="100%">
    <thead>
        <tr>
            <th>Project Year</th>
            <th>Project Number</th>
            <th>Project Title</th>
            <th>Client</th>
            <th>Site Address</th>
            <th>Director</th>
            <th>Archive Status</th>
            <th>Primary Location</th>
            <th>Location</th> <!-- Requires 2nd Query -->
            <th>Documents</th> <!-- Requires 2nd Query -->
        </tr>
    </thead>
    <tbody>
        @foreach (var project in Projects)
        {
            //Get a list of archived projects
            IEnumerable<Archive_Electronic> ArchiveProjects = GetListArchives(project.ProjectID);
            string Docs = "";
            string Locs = "";
            foreach (var archive in ArchiveProjects)
            {
                //Write List of Docs
                if (archive.DocumentType == 1)
                {
                    Docs = Docs + "Dwg ";
                }
                else if (archive.DocumentType == 2)
                {
                    Docs = Docs + "Doc ";
                }
                else if (archive.DocumentType == 3)
                {
                    Docs = Docs + "Eml ";
                }
                //Write List of Locations
                if (archive.Location == 2)
                {
                    Locs = Locs + "Dub ";
                }
                else if (archive.Location == 3)
                {
                    Locs = Locs + "Gal ";
                }
                else if (archive.Location == 4)
                {
                    Locs = Locs + "Lon ";
                }
                else if (archive.Location == 6)
                {
                    Locs = Locs + "Cor ";
                }
            }


            <tr id="@project.ProjectNumber" onclick="showProject(this.id)">
                <td>@project.Year</td>
                <td>@project.ProjectNumber</td>
                <td>@project.ProjectTitle</td>                                  
                <td>@project.Organisation.Organisation1</td>
                <td>@project.SiteAddress1</td>
                <td>@project.ProjectDirector</td>
                <td>Archive Status will go here</td>
                <td>@project.SiteArea</td>
                <td>@Locs</td>
                <td>@Docs</td>
            </tr>

        }


    </tbody>
</table>

저장소 내에있는 방법 :

public IEnumerable<Archive_Electronic> GetListArchives(int id)
{
    return context.Archive_Electronic.Where(x => x.Project == id).DefaultIfEmpty();
}

제어 장치:

// GET: PQP/Stage9/ElectronicArchiveReport
public ActionResult ElectronicArchiveReport(string id)
{
    ViewBag.Years = YearRepository.GetYears();
    ViewBag.Projects = ProjectRepository.GetListProjects(id);
    ViewBag.URLYear = id;
    return View();
}

이 코드를 그대로 사용하면 다음을 얻을 수 있습니다.

System.NullReferenceException: Object reference not set to an instance of an object.

보기에있는 반품 :

return Archive_ElectronicRepository.GetListArchives(pid);

@functions에 위치한, 나는 당신이 아마도 이와 같이 DB를 호출해서는 안된다는 것을 알고 있습니다. 이것이 아마도 null 예외 오류가 발생하는 이유 일 것입니다.하지만 여기에서 손실을 입었고 실제로이 작업을 수행하는 적절한 방법을 찾을 수 없습니다.

Cgijbels

귀하는 private readonly IArchive_ElectronicRepository Archive_ElectronicRepository;인스턴스화 또는 할당하지 않는 것 같습니다되는 결과NullReferenceException

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

뷰 내의 루프에서 쿼리 메서드 호출

분류에서Dev

AngularJS : 루프 내에서 팩토리 메서드 호출

분류에서Dev

뷰 내부에서 뷰 호출

분류에서Dev

AppKit에서 메인 뷰의 그리기 메서드 후에 applicationDidFinishLaunching이 호출되는 이유

분류에서Dev

자식 뷰에서 호출 될 때 루트 뷰 객체에서 호출 될 루트 뷰의 메서드를 가져옵니다.

분류에서Dev

SwiftUI의 뷰에서 메서드를 호출하는 방법

분류에서Dev

뷰의 컨트롤러에서 메서드 호출 (ROR)

분류에서Dev

WPF MVVM : 변환기에서 뷰 모델의 메서드 호출

분류에서Dev

뷰에서 모델 메서드 호출

분류에서Dev

뷰에서 팩토리의 출력 호출

분류에서Dev

내 뷰에서 직접 호출하는 대신 내 작업 메서드에서 내 REST API 호출

분류에서Dev

메서드는 부모 뷰 컨트롤러에서 호출하지만 메서드 내부 논리는 어떤 작업도 수행하지 않습니다.

분류에서Dev

외부 메소드의 루비 루프에서 다음 호출

분류에서Dev

ASP.NET MVC-뷰 내에서 컨트롤러 메서드를 호출하여 다른 여러 뷰로 리디렉션하려면 어떻게합니까?

분류에서Dev

모델 컬렉션의 뷰에서 메서드를 호출합니까?

분류에서Dev

onclick 앵커 태그의 뷰에서 서버 측 메소드 호출

분류에서Dev

d365의 runbasebatch 클래스 내에서 쿼리 호출

분류에서Dev

메서드를 호출하여 메서드에서 뷰 반환

분류에서Dev

정의되지 않은 메서드 Illuminate \ View \ View :: make () laravel 5.3 호출이 뷰로 리디렉션되지 않음

분류에서Dev

레일에 루비가있는 루프 동안 뷰에서 도우미 메서드를 동적으로 호출

분류에서Dev

뷰 (xaml.cs)에서 뷰 모델 메서드 호출

분류에서Dev

루프 내에서 비동기 호출 처리

분류에서Dev

linq 쿼리의 foreach 루프 내에서 foreach 루프 사용

분류에서Dev

Codeigniter의 뷰에서 변수 호출

분류에서Dev

JavaScript에서 해당 메서드 내부의 메서드 호출

분류에서Dev

Spritekit의 노드 간 특정 거리에서 메서드 호출

분류에서Dev

$ routeProvider 내부의 AngularJS 호출 메서드

분류에서Dev

뷰 컨트롤러의 메서드 내부에서 클래스 메서드로 호출 된 UIAlertView에 대한 테스트 / 모킹

분류에서Dev

ForEach 루프 내에서 함수 호출

Related 관련 기사

  1. 1

    뷰 내의 루프에서 쿼리 메서드 호출

  2. 2

    AngularJS : 루프 내에서 팩토리 메서드 호출

  3. 3

    뷰 내부에서 뷰 호출

  4. 4

    AppKit에서 메인 뷰의 그리기 메서드 후에 applicationDidFinishLaunching이 호출되는 이유

  5. 5

    자식 뷰에서 호출 될 때 루트 뷰 객체에서 호출 될 루트 뷰의 메서드를 가져옵니다.

  6. 6

    SwiftUI의 뷰에서 메서드를 호출하는 방법

  7. 7

    뷰의 컨트롤러에서 메서드 호출 (ROR)

  8. 8

    WPF MVVM : 변환기에서 뷰 모델의 메서드 호출

  9. 9

    뷰에서 모델 메서드 호출

  10. 10

    뷰에서 팩토리의 출력 호출

  11. 11

    내 뷰에서 직접 호출하는 대신 내 작업 메서드에서 내 REST API 호출

  12. 12

    메서드는 부모 뷰 컨트롤러에서 호출하지만 메서드 내부 논리는 어떤 작업도 수행하지 않습니다.

  13. 13

    외부 메소드의 루비 루프에서 다음 호출

  14. 14

    ASP.NET MVC-뷰 내에서 컨트롤러 메서드를 호출하여 다른 여러 뷰로 리디렉션하려면 어떻게합니까?

  15. 15

    모델 컬렉션의 뷰에서 메서드를 호출합니까?

  16. 16

    onclick 앵커 태그의 뷰에서 서버 측 메소드 호출

  17. 17

    d365의 runbasebatch 클래스 내에서 쿼리 호출

  18. 18

    메서드를 호출하여 메서드에서 뷰 반환

  19. 19

    정의되지 않은 메서드 Illuminate \ View \ View :: make () laravel 5.3 호출이 뷰로 리디렉션되지 않음

  20. 20

    레일에 루비가있는 루프 동안 뷰에서 도우미 메서드를 동적으로 호출

  21. 21

    뷰 (xaml.cs)에서 뷰 모델 메서드 호출

  22. 22

    루프 내에서 비동기 호출 처리

  23. 23

    linq 쿼리의 foreach 루프 내에서 foreach 루프 사용

  24. 24

    Codeigniter의 뷰에서 변수 호출

  25. 25

    JavaScript에서 해당 메서드 내부의 메서드 호출

  26. 26

    Spritekit의 노드 간 특정 거리에서 메서드 호출

  27. 27

    $ routeProvider 내부의 AngularJS 호출 메서드

  28. 28

    뷰 컨트롤러의 메서드 내부에서 클래스 메서드로 호출 된 UIAlertView에 대한 테스트 / 모킹

  29. 29

    ForEach 루프 내에서 함수 호출

뜨겁다태그

보관