Impossible d'appeler le service dans le composant Blazor
P粉351138462
2023-08-31 12:01:02
<p>J'ai un service qui ressemble à ceci : </p>
<pre class="brush:php;toolbar:false;">espace de noms Hydra.Services
{
Employé de classe publique
{
URL de chaîne publique { get ; set }
Tâche asynchrone publique<EmployeeModel> GetEmployee(){
// Renvoie les données JSON
}
}
}</pré>
<p>Je souhaite appeler ce service dans mon composant <code>Company</code>
<pre class="brush:php;toolbar:false;">@page "/"
<div> @company ... </div> <!-- OK, les détails de l'entreprise ont été rendus -->
<div> @Employee ... </div> <!-- System.NullReferenceException : 'La référence d'objet n'est pas définie sur une instance d'un objet. ' --->
@code {
chaîne d'entreprise ;
chaîne emlpoyee ;
Tâche asynchrone de remplacement protégé OnInitializedAsync()
en utilisant (client HttpClient = new HttpClient())
{
// Obtenir les détails de l'entreprise
// Voici le problème :
EmployeeModel emp = new Employee();
emp.url = "http://google.com";
emlpoyee = attendre emp.Employee();
}
}
}</pré>
<p>Donc, il n'y a rien de mal avec la logique d'affichage de l'entreprise, mais le service Employee que j'appelle à l'intérieur using() ne semble pas fonctionner. Je ne sais pas ce qui ne va pas à part l'erreur. </p>
<p>Il ne s’agit pas d’oublier d’inclure un modèle ou d’injecter un service. </p>
<p>Je ne suis qu'un débutant, les questions sont donc relativement simples. </p>
Vous avez créé la variable :
Mais vous appelez
@Employee
, ce qui sera nul.Essayez de passer à la variable que vous avez réellement saisie dans l'employé :
De plus, je pense que vous avez mal orthographié la variable. Peut-être que vous voulez dire @employé.
Vous avez tout rempli ici :
Donc, d'après le code que vous avez fourni, appeler @emlpoyee est logique.
Et aussi
<div> @Employee ... </div>
改为<div> @emlpoyee ... </div>
Votre code n'effectue pas correctement l'injection de service. Je vous présente une méthode que j'utilise et qui fonctionne correctement, j'espère qu'elle vous sera utile.
Tout d'abord, vous devez créer une interface pour votre service :
Vous devez ensuite modifier votre service, en héritant de l'interface ci-dessus, comme suit :
Maintenant, vous devriez injecter le service dans
Startup.cs
或Program.cs
comme ceci :Enfin, vous devez injecter votre service dans le composant requis comme indiqué ci-dessous et l'utiliser facilement :
Bien sûr, votre code présente de nombreux problèmes structurels, et vous souhaiterez peut-être simplement spécifier le problème sous forme d'exemple de code. J'ai donc essayé d'expliquer comment cela fonctionne en utilisant votre propre code afin que l'exemple vous soit plus spécifique. .