1

我想做一些简单的事情。我有一个产品列表(带有名称属性),每个产品旁边都有一个“详细信息”按钮。当我点击按钮时,我希望产品的详细信息显示在列表旁边(没想到,我知道^^)。

到目前为止我所做的:

显示产品列表 - 显示每个产品的名称和按钮:

@foreach (var product in item.Value) {
        <div>id : @product.product.PRODUCT_ID , name : @product.product.PRODUCT_NAME @Html.ActionLink("Details", "ProductDetails", new { id = product.product.PRODUCT_ID }, null)</div> 
    }

在另一个页面中显示产品的详细信息:

@model IEnumerable<MyService.PRODUCT>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.EPC_NUMBER)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.PRODUCT_NAME)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.MANUFACTURING_DATE)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.EPC_NUMBER)
        </td>      
        <td>
            @Html.DisplayFor(modelItem => item.PRODUCT_NAME)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.MANUFACTURING_DATE)
        </td>
    </tr>
}
</table>

我现在想做的是:在同一视图中使用 2。当我单击详细信息按钮时,我的控制器的一个函数会以 product.id 作为参数调用,然后显示产品的详细信息。如何做我想做的事?谢谢 !

4

2 回答 2

3

德比很容易。

首先,您需要使用 MyService.PRODUCT 模型为 Details 部分执行 View 或 PartialView。

改变

@Html.ActionLink("Details", "ProductDetails", new { id = product.product.PRODUCT_ID }, null)

@Ajax.ActionLink("Details", "ProductDetails", new { id = product.product.PRODUCT_ID }, new AjaxOptions {UpdateTargetId = "myDisplayID"})

在产品列表下添加一个新的 Div

<div id="myDisplayID"></div>

该链接将使用 MVC 框中的 Jquery 文件进行 Ajax 调用。它将执行 ProductDetails 控制器的操作 Details,它返回已设置的局部视图并将返回的 HTML 呈现到指定的 Div 标记中。

您可能还想看看这个:如何使用 Ajax.ActionLink?

此外,您可能需要添加以下脚本:

<script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
于 2013-06-23T17:14:05.067 回答
0

我认为您最好的选择是也为这些项目制定行动结果。(这将从数据库重新加载数据),然后使用ajax调用它。(点击按钮)

于 2013-06-23T16:58:55.900 回答