我有一些记录。单击每条记录后,会出现信息
需要在手风琴中显示。
有两种方法可以实现您的愿望。我想您必须从提供有关记录的详细信息的操作中返回部分视图。
- 监听锚链接的点击事件,在事件内部你必须框住url,然后
$("#accordion-container-1").load(url)。
例如。
从您的评论中,我看到您必须将 orderNo 操作作为参数传递。因此,您必须将 orderNo 设置为 id 或将其附加到某个字符串(以避免元素中重复的 id)并设置为锚链接的 id。
那么,
$(function(){
$("a.somecssclass").click(function(){
var orderNo = this.id;
var url = "/ControllerName/Tracking?orderNo=" + orderNo;
// this will call the action through ajax and update the container with the
// partial view's html.
$("#divToLoadTheHtml").load(url);
});
});
- 使用 MVC 支持的 ajax 操作链接。您可以使用
Ajax.ActionLink 创建一个操作链接,该链接通过 ajax 调用一些控制器操作并将 html 结果更新到容器。
例如。
在这种情况下,当您通过循环集合生成记录时,您必须通过 Ajax.ActionLink 方法创建链接(单击时必须通过 ajax 加载内容),并且您还必须包含 jquery'unobtrusive.ajax.js 库。
@foreach(var m in Collection)
{
.. other stuff
@Ajax.ActionLink(link name, "Action", new { orderNo = m.something? },
new AjaxOptions
{
UpdateTargetId = "somediv" // set the div name where you want to load the partial view
});
}
根据 OP 的评论更新
你的action方法应该是这样的,
public PartialViewResult Tracking(int orderNo)
{
var manager = new OrderManager();
return PartialView(manager.Tracking(orderNo));
}
您应该有一个名称为 Tracking.cshtml 的局部视图,并且在局部视图中您必须创建代表您正在讨论的记录的详细信息的 html。
Tracking.cshtml
@model TrackingModel
<div>
@Html.DisplayFor(...)
...
</div>
当您从 jquery 或通过 ajax 操作(如前所述)调用操作 Tracking 时,您将获得部分视图 html,您可以将其加载到 div 等特定容器中。