Modifier une fois de plus:Envoyer deux modèles en un Voir .Net dans VB
il semble donc comme je l'ai compris la partie d'adresse aussi, dans la classe que j'ai:
Public ReadOnly Property addresses As IEnumerable(Of Address)
Get
Return _these_addresses
End Get
End Property
Et le modèle que j'ai:
<% For Each item In Model.addresses%>
<tr>
<td>
<a href='<%: Url.Action("Edit", "Address", New With { .pid=Model.ContactID, .id=item.AddressID }) %>'>
<img src='<%: Url.Content("~/Content/Images/Edit.jpg") %>' alt="Edit" />
</a>
<a href='<%: Url.Action("Details", "Address", New With { .pid=Model.ContactID, .id=item.AddressID }) %>'>
<img src='<%: Url.Content("~/Content/Images/Detail.jpg") %>' alt="Details" />
</a>
<a href='<%: Url.Action("Delete", "Address", New With { .pid=Model.ContactID, .id=item.AddressID }) %>'>
<img src='<%: Url.Content("~/Content/Images/Delete.jpg") %>' alt="Delete" />
</a>
</td>
<td>
<%: item.Street%>
</td>
<td>
<%: item.City%>
</td>
<td>
<%: item.StateID%>
</td>
<td>
<%: item.CountryID%>
</td>
<td>
<%: item.Zip%>
</td>
</tr>
<% Next%>
</table>
Modifier Encore une fois:
J'ai ajouté ce pour tous les domaines en contact avec la classe et il travaille ... Je juste besoin de trouver la liste des adresses maintenant ...
Public ReadOnly Property FirstName() As String
Get
Return _this_contact.FirstName
End Get
End Property
EDIT:
J'ai à ce sujet a compris:
Je pris un coup de feu dans l'obscurité et a fait une ContactViewModel à base de Exemples de C J'ai trouvé dans la recherche sur la façon de le faire
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports TotallyAwesomeCRM.Contact
Imports TotallyAwesomeCRM.Address
Public Class ContactViewModel
Public contact As Contact
Public address As Address
Private _this_contact As Contact
Private _these_addresses As System.Linq.IQueryable(Of Address)
Sub New(ByVal this_contact As Contact, ByVal these_addresses As System.Linq.IQueryable(Of Address))
' TODO: Complete member initialization -this was added by the framework for me when I tried to call this class - I don't know what to do here - resources?
_this_contact = this_contact
_these_addresses = these_addresses
End Sub
End Class
donc, dans mon contrôleur I:
Function Details(ByVal id As Integer) As ActionResult
Dim this_contact = GetContact(id)
Dim these_addresses =
From address In addressDataContext.Addresses, xref In addressDataContext.ContactAddressesXrefs
Where address.AddressID = xref.AddressID And xref.ContactID = id
Select address
Dim viewModel = New ContactViewModel(this_contact, these_addresses)
Return View(viewModel)
End Function
Et dans le modèle, il a trouvé le contact quand j'ai commencé à taper Model.contact
<%: Model.contact.FirstName%>
Mais il m'a donné là une erreur: NullReferenceException: Référence d'objet non mettre à une instance d'un objet.
Il ne doit pas être nulle ... S'il vous plaît me aider à la TODO
========================== ============================================= ===== ORIGINALPOST:
Ceci est ma première aventure .NET. Tout ce que j'ai fait jusqu'ici j'ai compris. OK J'ai des contacts, et les contacts peuvent avoir plusieurs adresses. Je voudrais afficher ces adresses quand je regarde le détail d'un contact Je voudrais également avoir un conteneur qui est une vue de liste de ses adresses. À partir de cette liste, je souhaite pouvoir modifier/supprimer/afficher l'adresse.
Ma structure de base de données est:
Tables:
Contacts
<contains contact info and PK>
Addresses
<contains address info and PK>
ContactAddressesXref
ContactID
AddressID
J'ai essentiellement été l'édition du squelette des fichiers de l'application vide ASP.NET MVC me donne
Voici donc la dernière chose que je J'ai essayé dans mon contrôleur de contact:
'
' GET: /Contacts/Details/5
Function Details(ByVal id As Integer) As ActionResult
Dim this_contact =
From contact In dataContext.Contacts, address In addressDataContext.Addresses, xref In addressDataContext.ContactAddressesXrefs
Where address.AddressID = xref.AddressID And xref.ContactID = id
Select contact, address
Return (View(this_contact))
End Function
Ce que je reall Je voulais faire était interroger les adresses séparément et les envoyer en tant que leur propre ensemble. Je ne sais pas si faire ceci est la bonne chose à faire, mais quand j'ai essayé d'envoyer deux modèles, ça a flippé.
qui échoue bien sûr parce que la vue a cela il:
<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of IEnumerable (Of TotallyAwesomeCRM.Contact))" %>
J'ai essayé:
Inherits="System.Web.Mvc.ViewPage(Of IEnumerable (Of TotallyAwesomeCRM.Contact, Of TotallyAwesomeCRM.Address))
Il a dit:
'InitializeCulture' is not a member of 'ASP.views_contacts_details_aspx'.
Alors OK, j'ai essayé:
Inherits="System.Web.Mvc.ViewPage"
Et il jette et erreur ici:
<div class="display-field"><%: Model.FirstName%></div>
Bien sûr, si je me trompe dans le contrôleur? Je sais que je ne peux pas avoir juste System.Web.Mvc.ViewPage (Of IEnumerable (Of TotallyAwesomeCRM.Contact)) qu'il devra accepter plus que cela. J'ai essayé le jacking avec la partie Model.FirstName en disant Contact.FirstName, mais cela ne s'est pas produit dans la liste déroulante quand j'ai commencé à écrire Contact. Je pourrais le faire facilement dans d'autres langues, .Net semble être un jeu de balle différent. S'il vous plaît aider!
S'il vous plaît garder des tags comme "VB Visual Basic 2010 LINQ to SQL" sur le titre. Laissez-les simplement dans les tags. –
OK Je voulais dire Visual Studio, je n'essayais pas de faire est recherche, je pensais que ces choses étaient importantes à savoir pour être en mesure de répondre à la question, encore une fois, je suis tout nouveau à .net, donc peut-être pas . – KacieHouser
Laissez-les dans les tags et ils sont très consultables. Mais cela rend le titre lisible. –