Отредактируйте еще раз:
Так что, похоже, я вычислил и адресную часть в моем классе:
Public ReadOnly Property addresses As IEnumerable(Of Address)
Get
Return _these_addresses
End Get
End Property
И в шаблоне у меня есть:
<% 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>
Снова отредактируйте:
Я добавил это для каждого поля в контакте с классом, и оно работает ... Мне просто нужно выяснить список адресов сейчас ...
Public ReadOnly Property FirstName() As String
Get
Return _this_contact.FirstName
End Get
End Property
РЕДАКТИРОВАТЬ:
Я уже понял это:
Я сделал снимок в темноте и сделал ContactViewModel на основе примеров C, которые я нашел в исследованиикак это сделать
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
Так в моем контроллере 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
И в шаблоне он нашел контакт, когда я начал набирать Model.contact
<%: Model.contact.FirstName%>
Но это дало мне ошибку там: NullReferenceException: Ссылка на объект не установлена на экземпляр объекта.
Это не должно быть null ..Пожалуйста, помогите мне разобраться в TODO
==================================================================================== ОРИGINALPOST:
Это мое первое предприятие .NET.Все, что я сделал до сих пор, я понял.
ОК У меня есть контакты, и контакты могут иметь много адресов.Я хотел бы отображать эти адреса при просмотре сведений о контакте. Я также хотел бы иметь контейнер, представляющий собой список его адресов.Из этого списка я хочу иметь возможность редактировать / удалять / просматривать адрес.
Моя структура базы данных:
Таблицы:
Contacts
<contains contact info and PK>
Addresses
<contains address info and PK>
ContactAddressesXref
ContactID
AddressID
Я в основном былредактирование файлов скелета пустое приложение ASP.NET MVC предоставляет мне
Итак, вот последнее, что я попробовал в своем контроллере контактов:
'
' 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
Что я действительно хотел сделать, так это запросадреса отдельно и отправьте их как их собственный набор.Я не знаю, правильно ли это делать, но когда я пытался отправить две модели, это приводило в бешенство.
Что не получается, конечно, потому что в представлении есть это:
<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of IEnumerable (Of TotallyAwesomeCRM.Contact))" %>
Я пытался:
Inherits="System.Web.Mvc.ViewPage(Of IEnumerable (Of TotallyAwesomeCRM.Contact, Of TotallyAwesomeCRM.Address))
Он сказал:
'InitializeCulture' is not a member of 'ASP.views_contacts_details_aspx'.
Итак, я попытался:
Inherits="System.Web.Mvc.ViewPage"
И здесь выдает ошибку:
<div class="display-field"><%: Model.FirstName%></div>
Конечно, так я ошибаюсь в контроллере?Я знаю, что у меня не может быть просто System.Web.Mvc.ViewPage (из IEnumerable (из TotallyAwesomeCRM.Contact)), который должен был бы принимать больше этого.Я попытался соединиться с частью Model.FirstName, в которой было указано Contact.FirstName, но в раскрывающемся списке не появилось, когда я начал писать Contact.Я мог бы сделать это легко на других языках, .Net, кажется, другая игра с мячом.Пожалуйста, помогите!