当列表项被点击时,如何传递一个对象给部分视图

本文关键字:一个对象 何传递 视图 列表 | 更新日期: 2023-09-27 18:14:15

这是个控制器

 public class ProductController : Controller
{
    //
    // GET: /Product/
    public ActionResult Index(int id = 0)
    {
        return View(DALCategory.GetCategoryList());
    }
    public PartialViewResult productPartial(int id)
    {
        if (id > 0)
        {
            return PartialView("_productPartial", DALProduct.GetProductListByCateDetail(id));
        }
        else
        {
            return PartialView("_productPartial", DALProduct.GetProductList());
        }

    }

这是索引视图

中的代码
      @model IEnumerable<Model.Category>
        <h2>Products</h2>

        <table>
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.name)
                </th>
            </tr>
            @foreach (var item in Model)
            {
                <tr>
                    <td>
                        @Html.ActionLink(@item.name, "productPartial", new { id = item.id })
                    </td>
                </tr>
            }
        </table>
@Html.Partial(productPartial)

这是局部视图的代码。

@model IEnumerable<Model.Product>
<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.SKU)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.product_name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.price)
        </th>
        <th></th>
    </tr>
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.SKU)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.product_name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.price)
        </td>
        <td>
@*            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })*@
        </td>
    </tr>
}
</table>

所以我想做的是…当一个项被单击时,它会用一个新对象呈现局部。是的,分部视图只在同一页面上呈现。我一直在做很多事情。虽然我不认为这是一个很难的问题,但我真的不知道我需要为此做些什么。

当列表项被点击时,如何传递一个对象给部分视图

由于要更新页面的一部分,因此需要使用ajax来完成此操作。这里有两个选项:

  1. 用户@Ajax。ActionLink(如何在视图中加载局部视图)

  2. 你可以写你自己的jquery ajax请求调用你的控制器方法并返回部分视图

这也发生在我身上。我想要的页面是部分和加载在同一页,但它一直转发我到其他链接。请注意以下几点:

  1. 您已经包含了您的jquery-1.6.2.js或此文件的任何版本

  2. 还使您包含您已经创建的jquery文件。

  3. 如果你在.cshtml部分的某些部分包含了这些文件,那么确保你在_Layout.cshtml或其他你正在使用的布局文件中渲染它。例如,您已将文件包含在index.cshtml的头部部分,如下所示

    {@section头}然后你必须用@RenderSection("head", required: false)

    _layout.cshtml中渲染这个部分
    1. 你还可以做的是确保jQuery不包含两次,你没有一些javascript错误。查看浏览器中的javascript控制台以及Network选项卡,以确保正确包含所有脚本。

祝你好运! !