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

时间:2012-07-14 20:29:09

标签: jquery ajax asp.net-mvc asp.net-mvc-3 partial-views

我有一些记录。点击每条记录后,信息需要以手风琴形式显示。

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

到目前为止我所做的是

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

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

  

现在JQuery方法有(Model)对象,但我怎么能用它呢   从中呈现我的局部视图。

2 个答案:

答案 0 :(得分:2)

  

我有一些记录。点击每条记录都有信息   需要以手风琴展示。

有两种方法可以达到你想要的效果。我想你必须从动作中返回一个部分视图,它提供有关记录的详细信息。

  1. 聆听锚点链接的点击事件,在事件内部,您必须构建网址,然后$("#accordion-container-1").load(url)
  2. 实施例。

    根据您的评论,我发现您必须将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); 
      });   
    });
    
    1. 使用MVC支持的ajax动作链接。您可以使用Ajax.ActionLink创建一个操作链接,通过ajax调用某些控制器操作,并将html结果更新为容器。
    2. 实施例。

      在这种情况下,当您通过循环集合生成记录时,您必须通过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
});

}