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