Je ne suis pas en mesure de comprendre cette chose simple dans ASP.NET MVC:Comment passer les résultats de la requête avec les relations FK (EF) à la vue
J'ai deux tables:
Customer:
CustomerID
FirstName
LastName
AddressID
AddressTemporaryID
Address:
AddressID
Street
City
I Mes relations (FK) sont définies dans DB et essayent d'utiliser Entity Framework. Mes propriétés de navigation (FK) sont nommées Adresses et Adresses1. I créé référentiel:
public interface ICustomertRepository {
IQueryable<Customer> FindAllCustomers();
}
public class CustomerRepository : MvcApplication2.Models.ICustomerRepository {
public IQueryable<Customer> FindAllCustomers() {
return db.Customers;
}
}
Et mon HomeController a ceci:
public ActionResult Index()
{
var query = customerRepository.FindAllCustomers();
return View(query);
}
Mais comment puis-je accéder aux valeurs de mon point de vue? Je peux voir item.Adresses.Street/item.Adresses1.Street avec IntelliSense dans le modèle, mais quand je vais essayer, je obtenir NullReferenceException:
<% foreach (var item in Model)
{ %>
<tr>
<td>
<%= Html.Encode(item.FirstName) %>
</td>
<td>
<%= Html.Encode(item.Surname) %>
</td>
<td>
<%= Html.Encode(item.Adresses.Street) %>
</td>
<td>
<%= Html.Encode(item.Adresses1.Street) %>
</td>
</tr>
<% } %>
Je suis complètement perdu. J'ai essayé de chercher partout mais sans succès.
Salut, on dirait que c'est la "magie". J'ai essayé ça et ça a l'air de marcher. Mais j'ai trouvé un autre problème. Lorsque certains clients n'ont pas AddressTemporary (Customer.AddressTemporaryID == Null), j'obtiendrai également cette exception NullReferenceException. – user101096
Cela a du sens. L'algorithme de liaison tente d'accéder à la propriété "Street" sur la propriété "Addresses1", qui renvoie une référence null. Vous devriez essayer d'utiliser quelque chose comme Html.Encode (item.Adresses1 == null? "", Item.Adresses1.Street) dans votre expression –
Wow, ça marche comme un charme maintenant. <% = Html.Encode (item.Addresses! = Null? Item.Addresses.Street: "")%> Comme je me connais, j'atteindrai bientôt un autre "breakpoint", hehe. Merci pour votre aide. – user101096