我有一个页面要求按名称搜索功能,然后返回div中的部分视图,其中包含与名称匹配的所有产品。
这是我的Ajax(自我测试以来,正在采取细节并将其传递给控制器):
<script type="text/javascript">
function SearchName() {
var names = $('#prodname').val();
var param = { name: names};
$.ajax({
url: '@Url.Action("FilternameM")',
type: "POST",
datatype: "html",
UpdateTargetId: "divResult",
data: param,
success: function (data) {
$('#divResult').empty();
$('#divResult').html(data);
}
});
}
</script>
这是控制器(方法和变量都经过正确处理):
public PartialViewResult FilternameM(string name)
{
try
{
Product[] products = new ProductService.ProductsServiceClient().SearchProduct(name);
//List<Product> prod = products.ToList();
ViewBag.NameList = products;
return PartialView("_filtername", products);
}
catch
{
return PartialView("_filtername");
}
}
部分视图如下:
@model Common.Product[]
@foreach (var item in Model)
{
<div id="item" class="itemStyleProd">
<br />
<img src="@Html.DisplayFor(modelItem => item.ImageLink)" width="100px" height="100px" alt="image" style="border:3px"/>
<br />
@Html.DisplayFor(modelItem => item.Name) <br />
Retail Price: €@Html.DisplayFor(modelItem => item.Price)<br />
Date Listed: @Html.DisplayFor(modelItem => item.DateListed) <br />
@Html.ActionLink("Details", "Details", new { id = item.Name })
</div>
}
我调试了该函数,它正在输入控制器方法和部分视图。唯一的问题是视图中没有显示局部视图。我认为这与ajax有关!
这是应该显示它的div:
<div id="divResult"></div>
答案 0 :(得分:3)
简单地这样做:
$.ajax({
url: '@Url.Action("FilternameM")',
type: "POST",
datatype: "html",
data: param,
success: function (data) {
$('#divResult').empty();
$('#divResult').html(data);
}
UpdateTargetId 是Razor AjaxOptions 类属性,为什么要将它放在jquery ajax中。
答案 1 :(得分:1)
更改方法的类型&#34; POST&#34;到&#34;得到&#34;并希望这会帮助你
$.ajax({
url: '@Url.Action("FilternameM")',
type: "GET",
datatype: "json",
data: param,
success: function (data) {
$('#divResult').empty();
$('#divResult').html(data);
}
});
答案 2 :(得分:0)
编码实际上是正确的。我只是忘了更新我的div名称,所以它不匹配!