2009-11-29 47 views
0

我有一个常规的html网格,我将我的asp.net mvc视图绑定到一个名为MyObject []的强类型数组。 MyObject有40个属性,但我只填充其中的10个,因为这是主网格上显示的内容。这是在索引视图中。你可以加载一个新的页面到与asp.net mvc的jquery ui对话框

我想添加一列到我的网格有一个链接,说“编辑详细信息”。这将带来一个表格填写jQuery UI对话框,并允许用户编辑细节。我基本上想要显示在索引页顶部的jQuery UI对话框中的整个编辑视图。

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

所以,反正是有重新绑定到特定的myObject的,我从服务器重新填充还是我必须把一切下来第一和使用jQuery的时候我就行点击填写这些字段。

回答

2

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

如果你需要样品让我知道。

编辑

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

以上会做一个jQuery后返回到您的控制器,并呼吁jQueryMethod动作。

它也传递一个参数。如果你想要更多,逗号分开这些。

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

喜欢这个回报RenderPartial("PartialView", model);

1

这是一个典型的设计模式,有许多方法来完成这项任务。这里是我该怎么做:

添加一个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

+0

我没有问题将参数传回服务器使用Ajax,但我不明白的是,当我得到一个响应,什么踢开对话框显示。 – leora 2009-11-29 23:35:40

+0

在上面的代码中,doSomething函数被注册为回调事件,所以只要您从服务器获得响应,它就会启动。使用此功能启动您的演出对话过程。 – havana59er 2009-12-14 04:20:29

相关问题