Хорошо, я новичок в .net, я просто делаю снимок в темноте через все это. У меня есть таблица адресов с полями StateID и CountryID. Они ссылаются на таблицу «Состояния и страны». Я использую LINQ to SQL и Visual Studio 2010.
В моем контроллере адресов есть:
Function Create() As ActionResult
Dim these_states = GetStates()
Dim these_countries = GetCountries()
Dim viewModel = New AddressViewModel(these_states, these_countries)
Return View(viewModel)
End Function
'
' POST: /Addresses/Create
<HttpPost()> _
Function Create(ByVal this_address As Address) As ActionResult
dataContext.Addresses.InsertOnSubmit(this_address)
dataContext.SubmitChanges()
Return RedirectToAction("Index")
End Function
Я создал AddressViewModel, и он выглядит так:
Public Class AddressViewModel
Public Address As Address
Private _these_states As System.Linq.IQueryable(Of State)
Private _these_countries As System.Linq.IQueryable(Of Country)
Sub New(ByVal these_states As System.Linq.IQueryable(Of State), ByVal these_countries As System.Linq.IQueryable(Of Country))
_these_states = these_states
_these_countries = these_countries
End Sub
Dim StateList As New SelectList(_these_states, "StateID", "Label", 1)
Public Property States As SelectList
Get
Return StateList
End Get
Set(ByVal value As SelectList)
End Set
End Property
Dim CountryList As New SelectList(_these_countries, "CountryID", "Label", 1)
Public Property Countries As SelectList
Get
Return CountryList
End Get
Set(ByVal value As SelectList)
enter code here
Тогда, на мой взгляд, код у меня есть:
<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of TotallyAwesomeCRM.AddressViewModel)" %>
некоторый код удален как ненужный
<div class="editor-label">
State
</div>
<div class="editor-field">
<%: Html.DropDownList("StateID", Model.States, "1")%>
<%: Html.ValidationMessageFor(Function(model) model.StateID) %>
</div>
<div class="editor-label">
Country
</div>
<div class="editor-field">
<%: Html.DropDownList("CountryID", Model.Countries, "1")%>
<%: Html.ValidationMessageFor(Function(model) model.CountryID) %>
</div>
Поэтому, когда я пытаюсь перейти в Адреса / Создать, я получаю эту ошибку:
ArgumentNullException was not handled by user code:Value cannot be null.
Наименование параметра: items
И это указывает на эту строку в AddressViewModel:
Dim StateList As New SelectList(_these_states, "StateID", "Label", 1)
Я знаю, что это приводит к результатам, поэтому я посмотрел пункт Parameter и msdn сказал, что это System.Collections.IEnumerable
Итак, я изменил AddessViewModel на:
Public Address As Address
Private _these_states As System.Collections.IEnumerable
Private _these_countries As System.Collections.IEnumerable
Sub New(ByVal these_states As System.Collections.IEnumerable, ByVal these_countries As System.Collections.IEnumerable)
_these_states = these_states
_these_countries = these_countries
End Sub
Получил ту же ошибку, пожалуйста, помогите