使用Ajax的MVC部分视图 - 不出现在div中

时间:2014-04-18 12:28:07

标签: jquery ajax asp.net-mvc asp.net-mvc-4

我有一个页面要求按名称搜索功能,然后返回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>

3 个答案:

答案 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名称,所以它不匹配!