使用查询字符串的Ajax请求

时间:2014-02-06 19:16:35

标签: c# jquery asp.net-mvc asp.net-mvc-4 razor

“我有一个控制器,它有下拉列表和更改DDL绑定再次调用索引视图并返回加载内容的部分视图:     索引控制器:

public ActionResult Index(ProductEntity Prod, string CategoryId)
{
ViewBag.Category = new SelectList(ObjStore.categories, "CategoryId", "CategoryName");
if (Request.IsAjaxRequest())
{
var model = ObjStore.products.Where(x => x.CategoryId == Prod.CategoryId);
return PartialView("_ProductMaster", model);
}
else if (CategoryId != "" && CategoryId !=null)
{
var model = ObjStore.products.Where(x => x.CategoryId == Prod.CategoryId);
return PartialView("_ProductMaster", model);
}
return View();
}

部分视图:

    @model IEnumerable<StoreManagement.Models.ProductEntity>

    <div id="Products">

    @if (Model != null)
    {    

    <table style="width:100%;">
        <tr>
            <th>Product Name </th>
            <th>Max Qty</th>
            <th>Min Qty</th>
            <th>Edit</th>
        </tr> 

        @foreach (var item in Model)
        {
            <tr>
                <td>@item.ProductName.ToString()</td>
                <td>@item.MaxQty</td>
                <td>@item.MinQty</td>
                <td>@Html.ActionLink("Edit","EditProduct",new {ProductId=@item.ProductId},null)</td>
            </tr>        
        } 

    </table>
    }
    </div>

在上面我有编辑操作链接,它重定向到编辑视图,在这个页面上我有返回操作链接,它重定向到索引控制器,查询字符串为CategoryId,我在选择Dropdownlist时使用。

现在我想用CategoryId作为查询字符串加载索引视图。

'其他代码适用于此'

              if (Request.IsAjaxRequest())
                {
                    var model = ObjStore.products.Where(x => x.CategoryId == Prod.CategoryId);
                    return PartialView("_ProductMaster", model);
                }
                else if (CategoryId != "" && CategoryId !=null)
                {
                    var model = ObjStore.products.Where(x => x.CategoryId == Prod.CategoryId);
                    return PartialView("_ProductMaster", model);
                }

但它只返回部分视图。我希望该视图加载其_layout页面。或者,如果我们在U​​Rl中有查询字符串,或者让Request.IsAjaxRequest()为true,有没有办法调用DDL的onchange事件。“

1 个答案:

答案 0 :(得分:0)

如果您想要包含布局页面aswel,您应该返回视图而不是PartialView

            if (Request.IsAjaxRequest())
            {
                var model = ObjStore.products.Where(x => x.CategoryId == Prod.CategoryId);
                return View("_ProductMaster", model);
            }
            else if (CategoryId != "" && CategoryId !=null)
            {
                var model = ObjStore.products.Where(x => x.CategoryId == Prod.CategoryId);
                return View("_ProductMaster", model);
            }