一尘不染

在MVC3中使用JQuery渲染部分视图

ajax

我有一些记录。单击每条记录后,需要在手风琴中显示信息。

该信息应该从数据库动态获取。

到目前为止,我所做的是

创建局部视图。那是为了显示详细信息。

在记录上单击后,我调用jquery方法并在控制器上执行我的方法。控制器以Json的形式返回对象(或任何其他东西,打开以获取任何建议)。

现在,JQuery方法具有该(模型)对象,但是如何使用它来呈现其局部视图。


阅读 190

收藏
2020-07-26

共1个答案

一尘不染

我有一些记录。单击每条记录后,需要在手风琴中显示信息。

您可以通过两种方式实现自己的期望。我想您必须从操作中返回局部视图,该操作提供了有关记录的详细信息。

  1. 聆听锚链接的click事件,然后在事件内部构造URL,然后单击$("#accordion-container-1").load(url)

例如

从您的评论中,我看到您必须orderNo将action作为参数传递。因此,您必须设置orderNoas
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); 
  });   
});
  1. 使用MVC支持的Ajax操作链接。您可以使用Ajax.ActionLink通过ajax调用某些控制器动作来创建动作链接,并将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,该html表示您正在谈论的记录的详细信息。

Tracking.cshtml

@model TrackingModel

<div>
  @Html.DisplayFor(...)
  ...
</div>

当您Tracking通过jquery或ajax操作(如前所述)调用操作时,您将获得部分视图html,您可以将其加载到div之类的特定容器中。

2020-07-26