现在刚学习 ASP.NET、VB.Net、MVC。
我的意图是将模型传递给视图。我有一个简单的字符串案例的成功测试代码。我认为我今天绊倒的地方在于当前的视图模型是一个对象列表。我得到的错误是“传递到字典中的模型项的类型是'MVC_Test1.Geocode_Google_Results[]',但是这个字典需要一个'MVC_Test1.Geocode_Google_Results'类型的模型项。” 因此,以我有限的理解,似乎我正在传递一个对象列表(如预期的那样),但视图模型类型是用于创建列表的简单对象类型。
在许多示例中,响应都是用 C# 编写的。这些集中在 For Each 方法上(这是我对如何进行这项工作的第一个想法)。我已经尝试过了,但最终在 For Each ... AS object 子句中出现了对象类型错误。
我找到了一个 www 示例,它表明它应该作为一个数组来处理,如下所示: For I as integer = 0 to Model.Results.Count 这使我能够构建代码,但随后在运行时导致上面提到的对象类型错误而不是在构建时。
继续阅读,有几个主题似乎调用@model IEnumerable 作为一种方法。这只是使 viewdata 和模型对象在完成时未定义:
@Modeltype IEnumberable MVC_Test1.Geocode_Google_Results
或者
@Model IEnumberable MVC_Test1.Geocode_Google_Results
我怀疑我应该知道一些简单/基本的东西才能使这一切正常工作。这似乎直截了当地提出了一个设计问题,没有一个结构良好的答案。
如果可以在 VB.net 的上下文中解释答案,那对我会更有帮助。我有时确实使用其中一种网络 C# 到 VB.net 转换器进行翻译,因此任何响应都比没有好。
谢谢,
详情如下:
我有一个简单的课程:
Public Class Geocode_Google_Results
Public Property Results As New List(Of ManyGeocodeCoordinates)
'Methods
'Add to list
Public Sub AddResults(Address, Latitude, Longitude)
Results.Add(New ManyGeocodeCoordinates() With {.Address = Address, .latitude = Latitude, .longitude = Longitude})
End Sub
End Class
Public Class ManyGeocodeCoordinates
Public Property Address As String
Public Property latitude As Double
Public Property longitude As Double
End Class
然后我填充一些数据:
For x As Integer = 1 To resultCount
ManyResults(x) = New Geocode_Google_Results
ManyResults(x).AddResults(results.Elements("result").Elements("formatted_address").Value, results.Elements("result").Elements("geometry").Elements("location").Elements("lat").Value, results.Elements("result").Elements("geometry").Elements("location").Elements("lng").Value)
Next
然后我传递给视图:
ElseIf resultCount = 1 Then
' Send the user to the results page...Default View Page
Return View(ManyResults)
然后我有一个测试视图:
@Modeltype MVC_Test1.Geocode_Google_Results
@Code
ViewData("Title") = "httptest"
End Code
<h2>httptest</h2>
Default single address view
@model.Results(0).Address <br />
@model.results(0).latitude <br />
@model.results(0).longitude <br />
在 IE 中运行此程序时,我收到关于对象列表与模型类型对象的上述错误。