Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在分析MVC 4详细信息页面2个id_C#_Asp.net_Entity Framework_Asp.net Mvc 4 - Fatal编程技术网

C# 正在分析MVC 4详细信息页面2个id

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

有人能想一想为什么当我点击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 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查看