Tidak dapat memanggil perkhidmatan dalam komponen Blazor
P粉351138462
2023-08-31 12:01:02
<p>Saya mempunyai perkhidmatan yang kelihatan seperti ini: </p>
<pre class="brush:php;toolbar:false;">namespace Hydra.Services
{
Pekerja kelas awam
{
url rentetan awam { dapatkan;
public async Task<EmployeeModel>
// Kembalikan data JSON
}
}
}</pre>
<p>Saya mahu memanggil perkhidmatan ini dalam komponen <kod>Syarikat</code>
<pre class="brush:php;toolbar:false;">@page "/"
<div> @syarikat ... </div> <!-- OK, butiran syarikat telah diberikan
<div> @Pekerja ... </div> <!-- System.NullReferenceException: 'Rujukan objek tidak ditetapkan kepada contoh objek. ' -->
@kod {
rentetan syarikat;
rentetan emlpoyee;
protected override async Task OnInitializedAsync()
menggunakan (klien HttpClient = HttpClient baharu())
{
// Dapatkan butiran syarikat
// Inilah masalahnya:
EmployeeModel emp = new Employee();
emp.url = "http://google.com";
emlpoyee = tunggu emp.Pekerja();
}
}
}</pre>
<p>Jadi, tidak ada yang salah dengan logik untuk memaparkan syarikat, tetapi perkhidmatan Pekerja yang saya panggil di dalam menggunakan() nampaknya tidak berfungsi. Saya tidak tahu apa yang salah selain daripada kesilapan. </p>
<p>Bukan perkara terlupa untuk memasukkan model atau menyuntik perkhidmatan. </p>
<p>Saya hanya seorang pemula, jadi soalannya agak mudah. </p>
Anda mencipta pembolehubah:
Tetapi anda sedang menelefon
@Employee
, yang akan menjadi batal.Cuba tukar kepada pembolehubah yang sebenarnya anda masukkan ke dalam pekerja:
Selain itu, saya rasa anda salah mengeja pembolehubah. Mungkin anda maksudkan @pekerja.
Anda mengisi segala-galanya di sini:
Jadi, daripada kod yang anda berikan, memanggil @emlpoyee masuk akal.
Begitu juga
<div> @Employee ... </div>
改为<div> @emlpoyee ... </div>
Kod anda tidak melakukan suntikan perkhidmatan dengan betul. Saya membentangkan kepada anda satu kaedah yang saya gunakan dan ia berfungsi dengan betul, saya harap ia akan berguna kepada anda.
Pertama, anda perlu mencipta antara muka untuk perkhidmatan anda:
Maka anda perlu mengubah suai perkhidmatan anda, mewarisi daripada antara muka di atas, seperti ini:
Sekarang anda harus menyuntik perkhidmatan dalam
Startup.cs
或Program.cs
seperti ini:Akhir sekali, anda harus menyuntik perkhidmatan anda dalam komponen yang diperlukan seperti yang ditunjukkan di bawah dan menggunakannya dengan mudah:
Sudah tentu, kod anda mempunyai banyak isu struktur, dan anda mungkin hanya mahu menentukan masalah dalam bentuk kod contoh, jadi saya cuba menerangkan cara ia berfungsi menggunakan kod anda sendiri supaya contoh itu lebih khusus untuk anda .