我有一些记录。单击每条记录后,需要在手风琴中显示信息。
该信息应该动态地从数据库中获取。
到目前为止我所做的是
创建局部视图。那是假设显示详细信息。
单击记录后,我调用 jquery 方法并在控制器上执行我的方法。控制器以 Json 的形式返回对象(或任何其他东西,欢迎提出任何建议)。
现在 JQuery 方法有那个(模型)对象,但我怎么能用它来渲染我的部分视图。
我有一些记录。单击每条记录后,需要在手风琴中显示信息。
该信息应该动态地从数据库中获取。
到目前为止我所做的是
创建局部视图。那是假设显示详细信息。
单击记录后,我调用 jquery 方法并在控制器上执行我的方法。控制器以 Json 的形式返回对象(或任何其他东西,欢迎提出任何建议)。
现在 JQuery 方法有那个(模型)对象,但我怎么能用它来渲染我的部分视图。
我有一些记录。单击每条记录后,需要在手风琴中显示信息。
有两种方法可以实现您的愿望。我想您必须从提供有关记录的详细信息的操作中返回部分视图。
$("#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);
});
});
Ajax.ActionLink
,并将 html 结果更新到容器。前任。
在这种情况下,当您通过循环集合生成记录时,您必须通过方法创建链接(单击时必须通过 ajax 加载内容)Ajax.ActionLink
,并且您还必须包含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 的评论更新
你的动作方法应该是这样的,
public PartialViewResult Tracking(int orderNo)
{
var manager = new OrderManager();
return PartialView(manager.Tracking(orderNo));
}
您应该有一个带有名称Tracking.cshtml
的局部视图,并且在局部视图中您必须创建 html 代表您正在谈论的记录的详细信息。
跟踪.cshtml
@model TrackingModel
<div>
@Html.DisplayFor(...)
...
</div>
当您Tracking
从 jquery 或通过 ajax 操作(如前所述)调用操作时,您将获得部分视图 html,您可以将其加载到特定容器(如 div)中。
当您需要提交一些表单并将部分视图呈现为结果时,这是一种基本方法
function GetView(){
if ($('#MyHtmlForm').valid()){
$.ajax(
{
type: "POST",
url: $('#MyHtmlForm').attr("action"),
data: $('#MyHtmlForm').serialize(),
success: function(result) {
//Render the partial view
}
},
error: function(req, status, err) {
//handle the error
}
});
}
}
这用于通过 json 格式获取行的基本详细信息,因此使用 javascritp 生成 html
function GetSomeData() {
var cod = $('.row').val();
$.getJSON('@Url.action("ActionName","Controller")', { cod: cod }, function (result) {
//Render data
});
}