我有一些记录。点击每条记录后,信息需要以手风琴形式显示。
该信息应该动态地从数据库中获取。
到目前为止我所做的是
创建局部视图。这是为了显示详细信息。
点击记录后,我调用jquery方法并在控制器上执行我的方法。 Controller以Json的形式返回对象(或任何其他东西,可以打开任何建议)。
现在JQuery方法有(Model)对象,但我怎么能用它呢 从中呈现我的局部视图。
答案 0 :(得分:2)
我有一些记录。点击每条记录都有信息 需要以手风琴展示。
有两种方法可以达到你想要的效果。我想你必须从动作中返回一个部分视图,它提供有关记录的详细信息。
$("#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
创建一个操作链接,通过ajax调用某些控制器操作,并将html结果更新为容器。实施例。
在这种情况下,当您通过循环集合生成记录时,您必须通过Ajax.ActionLink
方法创建链接(在点击时必须通过ajax加载内容),并且您还必须包含{{1库。
jquery'unobtrusive.ajax.js
根据OP的评论进行更新
你的行动方法应该是这样的,
@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
});
}
您应该使用名称为public PartialViewResult Tracking(int orderNo)
{
var manager = new OrderManager();
return PartialView(manager.Tracking(orderNo));
}
的部分视图,并且在局部视图中您必须创建html,它代表您正在谈论的记录的详细信息。
<强> Tracking.cshtml 强>
Tracking.cshtml
当您从jquery或通过ajax动作调用动作@model TrackingModel
<div>
@Html.DisplayFor(...)
...
</div>
时(如前所述),您将获得部分视图html,您可以将其加载到特定容器(如div)中。
答案 1 :(得分:0)
这是一种基本方法 当你需要提交一些表格并将部分视图作为结果呈现时
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
});
}