P粉4968866462023-09-01 10:39:42
您建立了變數:
@emlpoyee
但您正在呼叫 @Employee
,這將是 null。
嘗試切換到您實際放入員工的變數:
@emlpoyee
另外,我認為您拼寫了變數錯誤。也許您的意思是 @employee。
您在這裡填充了所有內容:
emlpoyee = await emp.Employee();
因此,從您提供的程式碼來看,呼叫 @emlpoyee 是有意義的。
所以將 <div> @Employee ... </div>
改為 <div> @emlpoyee ... </div>
P粉5133162212023-09-01 09:57:36
您的程式碼沒有正確執行服務注入。我向您介紹一種我使用的方法,它可以正確工作,希望對您有用。
首先,您需要為您的服務建立一個介面:
namespace Hydra.Services { public interface IEmployee { Task<EmployeeModel> GetEmployee(); } }
然後,您需要修改您的服務,繼承自上述接口,如下所示:
namespace Hydra.Services { public class Employee:IEmployee { public async Task<EmployeeModel> GetEmployee() { // 返回JSON数据 } } }
現在,您應該在Startup.cs
或Program.cs
中註入服務,如下所示:
services.AddScoped<IEmployee,Employee>();
最後,您應該在所需的元件中註入您的服務,如下所示,並輕鬆使用它:
@page "/" @using Hydra.Services @inherits OwningComponentBase<IEmployee> <div> @company ... </div> <!-- OK,公司详细信息已呈现 --> <div> @Employee ... </div> <!-- System.NullReferenceException: '对象引用未设置为对象的实例。' --> @code { private string company; private EmployeeModel emlpoyee = new EmployeeModel; private IEmployee employeeService => Service; protected override async Task OnInitializedAsync() // 获取公司详细信息 // 这里是问题所在: EmployeeModel emp = new EmployeeModel(); emp.url = "http://google.com"; emlpoyee = await employeeService.GetEmployee(); }
當然,您的程式碼有很多結構問題,您可能只是想以範例程式碼的形式指定問題,因此我試圖解釋使用您自己的程式碼的工作方法,以便示例對您更具體。