【问题标题】:can you load a new page into a jquery ui dialog with asp.net mvc您可以使用 asp.net mvc 将新页面加载到 jquery ui 对话框中吗
【发布时间】:2009-11-30 07:31:29
【问题描述】:

我有一个常规的 html 网格,我将我的 asp.net mvc 视图绑定到一个名为 MyObject[] 的强类型数组。 MyObject 有 40 个属性,但我只填充其中的 10 个,因为这是主网格上显示的内容。这是在索引视图中。

我想在我的网格中添加一列以获得显示“编辑详细信息”的链接。这将打开带有表单的 jquery ui 对话框,供用户填写并允许用户编辑详细信息。我基本上想在索引页面顶部的 jquery ui 对话框中显示我的整个编辑视图。

我遇到的一个问题是,详细信息屏幕中的数据比我从服务器上下载的数据多得多。当编辑是一个单独的页面时,这很好,因为我回到服务器并填充了所有详细数据,然后绑定了编辑页面,但我现在显然不能这样做。

那么,无论如何要重新绑定到我从服务器重新填充的特定 MyObject 还是我必须首先关闭所有内容并在单击行时使用 jquery 填充这些字段.

【问题讨论】:

    标签: jquery asp.net-mvc binding


    【解决方案1】:

    为什么不使用 jQuery 进行部分回传以获取要编辑的模型?然后您可以返回模型或 RenderParttial 并简单地在对话框中显示生成的 html。

    如果您需要样品,请告诉我。

    编辑

    $.post("/Controller/jQueryMethod", { param: paramValue }, function(newCommentListHTML) {
      //do something interesting with the html
    });
    

    上面会做一个 jquery post 到你的控制器和一个名为 jQueryMethod 的动作。

    它还传递一个参数。如果您需要更多内容,请用逗号分隔这些内容。

    然后,您的控制器会抓取模型,然后将模型传递给 PartialView,然后返回。

    很像这样返回RenderPartial("PartialView", model);

    【讨论】:

      【解决方案2】:

      这是一种典型的设计模式,有多种方法可以完成任务。以下是我的做法:

      在您的编辑链接中添加一个 onclick 处理程序,使用它来调用 javascript 函数并将您的记录 ID 作为参数传递。 使用 jQuery 的 getJSON 函数对控制器执行 AJAX 调用。

      $.getJSON("/Home/GetDetails/" + yourRecordId, function (data) {
                  doSomething(data);
              });
      

      在您的控制器上调用一个返回 JsonResult 的方法。

          public JsonResult GetDetails(int? id)
          {
              Array MyObject = GetDetails(id)
              return Json(MyObject); // MVC 1.0
              //return Json(MyObject, JsonRequestBehavior.AllowGet); // MVC 2.0
          }
      

      使用回调函数绑定您的结果并在模式弹出窗口中显示详细信息。

      这假设详细信息将适合模式弹出窗口。如果他们不这样做,那么我会考虑将您的详细信息保存在单独的视图中。一个好的 MVC 设计考虑了关注点的逻辑分离。如果您的视图实际上有两个目的(即列出和编辑),那么这是将其拆分为两个单独视图的理想理由。

      有关传递参数的更多详细信息,请参阅ASP.Net MVC Json Result: Parameters passed to controller method issue

      【讨论】:

      • 我使用 ajax 将参数传回服务器没有问题,但我不明白的是,当我得到响应时,对话框会从什么开始显示。
      • 在上面的代码中,doSomething 函数被注册为一个回调事件,所以它会在你从服务器得到响应后立即触发。使用此功能开始您的表演对话过程。
      猜你喜欢
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多