C# 正在分析MVC 4详细信息页面2个id
有人能想一想为什么当我点击details链接时没有得到所需的输出吗? 我发现错误:传入字典的模型项的类型为“System.Collections.Generic.List1[AW_Internet.Models.ProdList]”,但此字典需要类型为“AW_Internet.Models.ProdList”的模型项 控制器:C# 正在分析MVC 4详细信息页面2个id,c#,asp.net,entity-framework,asp.net-mvc-4,C#,Asp.net,Entity Framework,Asp.net Mvc 4,有人能想一想为什么当我点击details链接时没有得到所需的输出吗? 我发现错误:传入字典的模型项的类型为“System.Collections.Generic.List1[AW_Internet.Models.ProdList]”,但此字典需要类型为“AW_Internet.Models.ProdList”的模型项 控制器: public ActionResult Details(int id1 = 0, int id2 = 0) { string test = "SELECT Sal
public ActionResult Details(int id1 = 0, int id2 = 0)
{
string test = "SELECT SalesLT.Product.ProductID, SalesLT.ProductDescription.ProductDescriptionID, SalesLT.Product.Name, SalesLT.Product.ListPrice, LEFT(SalesLT.ProductDescription.Description, 20) as Descrption FROM SalesLT.Product, SalesLT.ProductDescription, SalesLT.ProductModelProductDescription WHERE SalesLT.Product.ProductModelID = SalesLT.ProductModelProductDescription.ProductModelID AND SalesLT.ProductModelProductDescription.ProductDescriptionID = SalesLT.ProductDescription.ProductDescriptionID AND SalesLT.Product.ProductID = " + id1 + " AND SalesLT.ProductDescription.ProductDescriptionID = " + id2;
var viewModel = db.Database.SqlQuery<ProdList>(test).ToList();
if (viewModel == null)
{
return HttpNotFound();
}
return View(viewModel);
}
详细信息视图:
@model AW_Internet.Models.ProdList
@{
ViewBag.Title = "Details";
}
<h2>Prod Details</h2>
<div class="displayField">
@Html.DisplayFor(model => model.ProductID)
</div>
<div class="displayField">
@Html.DisplayFor(model => model.ProductDescriptionID)
</div>
<div class="displayField">
@Html.DisplayFor(model => model.Name)
</div>
<div class="displayField">
@Html.DisplayFor(model => model.ListPrice)
</div>
<div class="displayField">
@Html.DisplayFor(model => model.Description)
</div>
<p>
@Html.ActionLink("Back to List", "Index")
</p>
还有我索引中的代码段,其中有两个id正在被解析:
<td>
@Html.ActionLink("Details", "Details", new { id1 = item.ProductID, id2 item.ProductDescriptionID })
</td>
在Details方法中,您返回了一个列表,并在视图中声明了一个ProdList。必须返回一个元素,如下所示:
public ActionResult Details(int id1 = 0, int id2 = 0)
{
string test = "SELECT SalesLT.Product.ProductID, SalesLT.ProductDescription.ProductDescriptionID, SalesLT.Product.Name, SalesLT.Product.ListPrice, LEFT(SalesLT.ProductDescription.Description, 20) as Descrption FROM SalesLT.Product, SalesLT.ProductDescription, SalesLT.ProductModelProductDescription WHERE SalesLT.Product.ProductModelID = SalesLT.ProductModelProductDescription.ProductModelID AND SalesLT.ProductModelProductDescription.ProductDescriptionID = SalesLT.ProductDescription.ProductDescriptionID AND SalesLT.Product.ProductID = " + id1 + " AND SalesLT.ProductDescription.ProductDescriptionID = " + id2;
var viewModel = db.Database.SqlQuery<ProdList>(test).ToList();
if (viewModel == null)
{
return HttpNotFound();
}
return View(viewModel.First());
}
希望它对您的详细信息方法有所帮助,您返回了一个列表,并且在您的视图中声明了一个ProdList。必须返回一个元素,如下所示:
public ActionResult Details(int id1 = 0, int id2 = 0)
{
string test = "SELECT SalesLT.Product.ProductID, SalesLT.ProductDescription.ProductDescriptionID, SalesLT.Product.Name, SalesLT.Product.ListPrice, LEFT(SalesLT.ProductDescription.Description, 20) as Descrption FROM SalesLT.Product, SalesLT.ProductDescription, SalesLT.ProductModelProductDescription WHERE SalesLT.Product.ProductModelID = SalesLT.ProductModelProductDescription.ProductModelID AND SalesLT.ProductModelProductDescription.ProductDescriptionID = SalesLT.ProductDescription.ProductDescriptionID AND SalesLT.Product.ProductID = " + id1 + " AND SalesLT.ProductDescription.ProductDescriptionID = " + id2;
var viewModel = db.Database.SqlQuery<ProdList>(test).ToList();
if (viewModel == null)
{
return HttpNotFound();
}
return View(viewModel.First());
}
希望它有帮助db.Database.SqlQuerytest返回一个集合,您的页面需要一个元素。你可以做:
var viewModel = db.Database.SqlQuery<ProdList>(test).FirstOrDefault();
if (viewModel == null)
{
return HttpNotFound();
}
return View(viewModel));
db.Database.SqlQuerytest返回一个集合,您的页面需要一个元素。你可以做:
var viewModel = db.Database.SqlQuery<ProdList>(test).FirstOrDefault();
if (viewModel == null)
{
return HttpNotFound();
}
return View(viewModel));
如果希望查询返回多个ProdList项,请将视图更新为:
@model List<AW_Internet.Models.ProdList>
或者更可能的情况是,您只需要一条记录:
public ActionResult Details(int id1 = 0, int id2 = 0)
{
string test = "...";
ProdList prodList = db.Database.SqlQuery<ProdList>(test).FirstOrDefault();
if (prodList == null)
return HttpNotFound();
return View(prodList);
}
也可以尝试更新变量名-:如果希望查询返回多个ProdList项,请将视图更新为:
@model List<AW_Internet.Models.ProdList>
或者更可能的情况是,您只需要一条记录:
public ActionResult Details(int id1 = 0, int id2 = 0)
{
string test = "...";
ProdList prodList = db.Database.SqlQuery<ProdList>(test).FirstOrDefault();
if (prodList == null)
return HttpNotFound();
return View(prodList);
}
也许还可以尝试更新变量名-:这就解决了问题,谢谢!这会是同一种方法来编辑动作结果吗?只需将查询改为更新,就必须返回与视图中声明的模型相同的模型。在您的示例中,您返回了一个列表,您可以查看并使用ProdList解决它,谢谢!这会是同一种方法来编辑动作结果吗?只需将查询改为更新,就必须返回与视图中声明的模型相同的模型。在您的示例中,您返回了一个列表,并使用ProdList查看