2011-04-26 5 views
0

J'utilise la ligne suivante dans ma vue asp.net MVC 3.Erreur de référence nulle dans asp.net MVC3

@Model.AuthorizedAgent.Person.FirstName 

Mais j'obtiens une erreur car AuthorizedAgent est null. Comment puis-je éviter cette erreur?

+0

Facile, assurez-vous que AuthorizedAgent n'est pas nul. Pour plus d'aide que cela, vous aurez besoin de nous montrer plus de code. :) – Talljoe

+0

Que faire si je veux fournir un autre texte si une valeur est nulle? – DotnetSparrow

+1

Je créer un viewmodel avec une propriété nommée firstname, puis définir la propriété dans le contrôleur selon si la valeur est nulle ou non pour éviter de mettre la logique dans votre vue. – ryudice

Répondre

1

Vous pouvez utiliser un modèle de vue avec la propriété suivante:

@Html.DisplayFor(x => x.AuthorizedAgentFirstName) 

et alors le contrôleur effectuer les tests nécessaires et remplir la propriété en conséquence:

public ActionResult Foo() 
{ 
    SomeModel model = ... 
    SomeViewModel vm = new SomeViewModel(); 

    // TODO: refactor this part to a mapping layer. AutoMapper is 
    // a good tool for the job 
    if (model.AuthorizedAgent != null && model.AuthorizedAgent.Person != null) 
    { 
     vm.AuthorizedAgentFirstName = model.AuthorizedAgent.Person.FirstName; 
    } 
    return View(vm); 
} 

Et afin de fournir une le texte alternatif de la valeur est null, vous pouvez utiliser l'attribut DisplayFormat:

[DisplayFormat(NullDisplayText = "EMPTY")] 
public string AuthorizedAgentFirstName { get; set; } 
0

Vous avez deux options ici. Le premier est de s'assurer que le modèle a une valeur. Sans voir votre code, je n'ai aucune idée si cela devrait toujours avoir une valeur ou non. L'autre option saisit conditionnellement la valeur, ce que vous pouvez faire facilement dans les moteurs de vue ASP.NET et Razor.

Questions connexes