这是我的全部错误:
传递到字典中的模型项的类型是' System.Data.Entity.DbSet`1 [application.Models.model]',但此字典需要类型为&#39的模型项; application.Models.TABLE1'
我的观点:
@model application.Models.TABLE1
@{
ViewBag.Title = "Update";
}
<h2>Update</h2>
视图的控制器逻辑:
//GET: /TABLE1/Update/
public ActionResult Update(string id)
{
IEnumerable<TABLE2> table2 = db.TABLE2;
IEnumerable<TABLE1> table1 = db.TABLE1;
string context = "Data Source=******;Initial Catalog=*******;User ID=******;Password=*****";
foreach (var row in table1)
{
string strAddr = row.ADDRESS1 + "+" + row.CITY + "+" + row.ST + "+" + row.ZIP + "+" + row.COUNTRY;
GoogleMapsDll.GeoResponse myCoordenates = new GoogleMapsDll.GeoResponse();
myCoordenates = GoogleMapsDll.GoogleMaps.GetGeoCodedResults(strAddr);
if (myCoordenates.Results != null && myCoordenates.Results.Length > 3)
{
string strLat = myCoordenates.Results[3].Geometry.Location.Lat.ToString();
string strLong = myCoordenates.Results[3].Geometry.Location.Lng.ToString();
using (SqlConnection myConnection = new SqlConnection(context))
{
myConnection.Open();
string strQueryUpdate = "UPDATE TABLE1 SET Lat = '" + strLat + "' , Lng = '" + strLong + "'" + "WHERE ID = '" + row.ID + "' ";
SqlCommand myCommandUpdate = new SqlCommand(strQueryUpdate, myConnection);
myCommandUpdate.ExecuteNonQuery();
}
}
}
return View(table2);
}
我已经搜索了堆栈溢出,并找到了许多关于类似错误的答案,但我似乎无法找到适合我的错误。我不确定将不同的模型项传递到字典中的位置或原因。任何建议或答案都可能正在发生,或者如何解决这个问题会有所帮助。如果有任何其他信息有用,请询问,我会将其包括在内。
答案 0 :(得分:4)
您需要在视图中更改模型类型以匹配您作为模型传递的内容。
在您的控制器中,您有
IEnumerable<TABLE2> table2 = db.TABLE2;
// ...
return View(table2);
但在你看来你有
@model application.Models.TABLE1
您需要将单个TABLE1作为模型传递到View(..)
或将视图模型更改为
@model IEnumerable<application.Models.TABLE2>
(错误所指的词典是ViewData词典)
答案 1 :(得分:1)
您的视图期望TABLE1
的实例作为模型,但您传递的是IEnumerable<TABLE2>
。因此,不仅类型不匹配,而且它给出了错误的实体类型。
更改视图以接受IEnumerable
,例如:
@model IEnumerable<application.Models.TABLE1>
或者只传递一个实例,例如:
return View(table1.First());
答案 2 :(得分:1)
错误告诉您到底出了什么问题。
您的视图需要一个
类型的对象@model application.Models.TABLE1
在您的操作方法中,您将table2
传递给您的视图,其编译时类型为IEnumerable<TABLE2>
,运行时类型为System.Data.Entity.DbSet<application.Models.model>
这些类型不同,因此View不知道如何处理它。