Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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# Ajax不会在mvc中检索部分视图中的数据_C#_Jquery_Ajax_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

C# Ajax不会在mvc中检索部分视图中的数据

C# Ajax不会在mvc中检索部分视图中的数据,c#,jquery,ajax,asp.net-mvc,asp.net-mvc-3,C#,Jquery,Ajax,Asp.net Mvc,Asp.net Mvc 3,我在下面的代码中使用ajax调用部分视图,但当我单击产品名称的链接时,该产品的描述不会通过ajax检索,并且会执行ajax错误。我正在检索用户在同一页面上选择的项目的详细信息,但未检索到。因为我是MVC的新手,所以请给出任何建议。谢谢 Create.cshtml @model List<PartialView.Models.tbl_product> <!DOCTYPE html> <html> <head> <title>Cr

我在下面的代码中使用ajax调用部分视图,但当我单击产品名称的链接时,该产品的描述不会通过ajax检索,并且会执行ajax错误。我正在检索用户在同一页面上选择的项目的详细信息,但未检索到。因为我是MVC的新手,所以请给出任何建议。谢谢

Create.cshtml

@model List<PartialView.Models.tbl_product>

<!DOCTYPE html>
<html>
<head>
    <title>Create</title>
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.js")" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('.msg').click(function () {
                var id = this.id;
                $.ajax({
                    url: "/Category/Display",
                    data: { data: id },
                    success: function (mydata) {
                        $("#link").empty().append(mydata);
                    },
                    error: function (mydata) { alert("error"); },
                    type: "POST"
                });
                return false;
            });
        });
    </script>
</head>
<body>
@foreach (var item in Model)
{ 
<a class="msg" href="#" id="@item.ProductId">@item.ProductName</a>
}
<div id="link">
</div>
</body>
</html>

代码中有三个问题可以解决

  • 一个是打字错误(partialview称为ClicksUS,而不是ClicksUC)
  • 另一个与返回数据的方式有关
  • 第三个是使用
    类型:“POST”
    ,您应该将其更改为
    类型:“GET”
尝试将代码更改为:

public ActionResult Display(int data)
{
    // using First() would have caused you an error in the view if not found
    // still not perfect below, but a step closer 
    var query = dbentity.tbl_product.FirstOrDefault(c => c.ProductId == data);
    // You had ClicksUC, rather than ClicksUS
    return PartialView("ClicksUS", query);
}
我还强烈建议您为数据创建一个
ViewModel
,而不是从数据库中传递对象,因为这将允许您准确地控制应查看的数据以及其格式等

[编辑] 此外,正如Darin所说,基于要重新运行的单行,您应该将局部视图模型类型更改为:

@model PartialView.Models.tbl_product

您的
详细信息
控制器操作在此处选择单个元素(因为您正在调用
.First()
):

因此,查询变量的类型是
tbl_product
,而不是
List

另一方面,您的partial的模型是
List
,这显然是错误的

您的零件型号应为单个
tbl\u产品

@model PartialView.Models.tbl_product
@Model.ProductDesc

哦,还有其他人对您的部分视图名称中的输入错误所说的。

您可以发布您从ajax callDisplay方法中得到的信息吗?获取id假设如果我单击id为2的链接,那么Display方法将获取该id,query将检索id为2的项的详细信息,但当ajax函数中的控件出错时块,如果我打印警报(mydata),它会打印[object object],请给出任何建议..使用json返回部分视图:返回视图(“PartialViewName”,jsonData),在这一行
返回PartialView(“ClicksUC”,查询)局部视图的名称为
单击suc
。但是你之前说的名字是
ClicksUs.cshtml
。我认为它拼错了。它的ClicksUC.cshtml我认为ajax代码中有任何错误,因为值是从控制器方法正确返回的,但是局部视图没有更新,当我单击链接时它没有显示任何记录..正确:-)-第一个默认值是我的意思-星期天早上疯狂。。原谅+1达林,我正在编辑添加,但你先说了(关于视图中的单数表);)
@model PartialView.Models.tbl_product
public ActionResult Display(int data)
{
    var query = dbentity.tbl_product.First(c => c.ProductId == data);
    return PartialView("ClicksUC", query);
}
@model PartialView.Models.tbl_product
@Model.ProductDesc