찾다

 >  Q&A  >  본문

Blazor 구성 요소에서 서비스를 호출할 수 없습니다.

<p>다음과 같은 서비스가 있습니다. </p> <pre class="brush:php;toolbar:false;">네임스페이스 Hydra.Services { 공개 수업 직원 { 공개 문자열 URL { 가져오기 } 공개 비동기 작업GetEmployee(){ // JSON 데이터를 반환합니다. } } }</pre> <p><code>Company</code> 구성 요소에서 이 서비스를 호출하고 싶습니다. </p> <pre class="brush:php;toolbar:false;">@page "/" <div> @company ... </div> <!-- 좋습니다. 회사 세부정보가 렌더링되었습니다 --> <div> @Employee ... </div> <!-- System.NullReferenceException: '개체 참조가 개체의 인스턴스로 설정되지 않았습니다. ' --> @코드 { 회사 문자열; 직원 문자열; protected 재정의 비동기 작업 OnInitializedAsync() (HttpClient 클라이언트 = 새로운 HttpClient()) 사용 { // 회사 세부정보 가져오기 // 문제는 다음과 같습니다. EmployeeModel emp = new Employee(); emp.url = "http://google.com";; empoyee = emp.Employee()를 기다립니다. } } }</pre> <p>그래서 회사를 표시하는 논리에는 아무런 문제가 없지만 using() 내부에서 호출하는 Employee 서비스가 작동하지 않는 것 같습니다. 오류 외에는 어떤 문제가 있는지 모르겠습니다. </p> <p>모델을 포함하거나 서비스를 주입하는 것을 잊어버리는 것은 문제가 되지 않습니다. </p> <p>저는 초보자이기 때문에 질문이 상대적으로 간단합니다. </p>
P粉351138462P粉351138462456일 전492

모든 응답(2)나는 대답할 것이다

  • P粉496886646

    P粉4968866462023-09-01 10:39:42

    다음 변수를 생성했습니다:

    으아악

    하지만 @Employee에 전화를 걸고 계시는데, 이는 null이 될 것입니다.

    직원에 실제로 넣은 변수로 전환해보세요:

    으아악

    그리고 변수 철자를 잘못 입력하신 것 같아요. @employee를 의미할 수도 있습니다.

    여기에 모든 내용을 입력하셨습니다:

    으아악

    그러므로 제공하신 코드에서 @emloyee를 호출하는 것이 합리적입니다.

    그럴 것이다 <div> @Employee ... </div> 改为 <div> @emlpoyee ... </div>

    회신하다
    0
  • P粉513316221

    P粉5133162212023-09-01 09:57:36

    귀하의 코드가 서비스 주입을 올바르게 수행하지 않습니다. 나는 내가 사용하고 올바르게 작동하는 방법을 여러분에게 제시합니다. 이 방법이 여러분에게 도움이 되기를 바랍니다.

    먼저 서비스에 대한 인터페이스를 만들어야 합니다.

    으아악

    그런 다음 위의 인터페이스를 상속받아 다음과 같이 서비스를 수정해야 합니다.

    으아악

    이제 다음과 같이 Startup.csProgram.cs에 서비스를 주입해야 합니다.

    으아악

    마지막으로 아래와 같이 필수 컴포넌트에 서비스를 주입하고 쉽게 사용해야 합니다.

    으아악

    물론, 여러분의 코드에는 구조적인 문제가 많고, 단지 예제 코드의 형태로 문제를 명시하고 싶을 수도 있기 때문에 예제가 여러분에게 더 구체적으로 전달될 수 있도록 여러분의 코드를 사용하여 어떻게 작동하는지 설명하려고 노력했습니다. .

    회신하다
    0
  • 취소회신하다