Ich bin nicht in der Lage, um herauszufinden, diese einfache Sache in ASP.NET MVC zu übergeben:Wie Abfrageergebnisse mit FK Beziehungen (EF) auf die Ansicht
Ich habe zwei Tabellen:
Customer:
CustomerID
FirstName
LastName
AddressID
AddressTemporaryID
Address:
AddressID
Street
City
I habe meine Relationen (FK) in DB gesetzt und versuche Entity Framework zu benutzen. Meine Navigationseigenschaften (FK) heißen Adressen und Adressen1. I erstellt Repository:
public interface ICustomertRepository {
IQueryable<Customer> FindAllCustomers();
}
public class CustomerRepository : MvcApplication2.Models.ICustomerRepository {
public IQueryable<Customer> FindAllCustomers() {
return db.Customers;
}
}
Und mein Homecontroller hat dies:
public ActionResult Index()
{
var query = customerRepository.FindAllCustomers();
return View(query);
}
Aber wie kann ich auf Werte in meiner Ansicht? Ich kann item.Adresses.Street/item.Adresses1.Street mit Intellisense in Modell sehen, aber wenn ich es versuchen wird, ich 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>
<% } %>
ich völlig verloren bin. Ich habe versucht, überall zu suchen, aber ohne Erfolg.
Hallo, sieht so aus als wäre das "Magie". Ich habe das versucht und es scheint zu funktionieren. Aber ich habe ein anderes Problem gefunden. Wenn ein Kunde kein AddressTemporary (Customer.AddressTemporaryID == Null) hat, erhalte ich auch diese NullReferenceException. – user101096
Das macht Sinn. Der Bindungsalgorithmus versucht, auf die Eigenschaft "Street" in der Eigenschaft "Addresses1" zuzugreifen, die eine Nullreferenz zurückgibt. Sie sollten versuchen, etwas wie Html.Encode (item.Adresses1 == null? "", Item.Adresses1.Street) in deinem Ausdruck –
Wow, es funktioniert jetzt wie ein Zauber. <% = Html.Encode (item.Addresses! = Null? Item.Addresses.Street: "")%> Wie ich mich selbst kenne, werde ich bald einen anderen "Breakpoint" erreichen, hehe. Danke für Ihre Hilfe. – user101096