我有一些记录。点击每条记录后,需要用手风琴显示信息。在MVC3中使用JQuery呈现部分视图
该信息应该从数据库中动态获取。
我到目前为止所做的是
创建部分视图。这是假设显示详细信息。
在点击记录时,我打电话给jquery方法并在控制器上执行我的方法。控制器以Json的形式返回对象(或其他任何东西,可以打开任何建议)。
现在JQuery方法有(模型)对象,但我怎么能用它来 渲染我的部分视图。
我有一些记录。点击每条记录后,需要用手风琴显示信息。在MVC3中使用JQuery呈现部分视图
该信息应该从数据库中动态获取。
我到目前为止所做的是
创建部分视图。这是假设显示详细信息。
在点击记录时,我打电话给jquery方法并在控制器上执行我的方法。控制器以Json的形式返回对象(或其他任何东西,可以打开任何建议)。
现在JQuery方法有(模型)对象,但我怎么能用它来 渲染我的部分视图。
我有一些记录。在点击每条记录时,需要以手风琴显示信息 。
有两种方法可以实现你的愿望。我想你必须从提供有关该记录的详细信息的操作中返回部分视图。
$("#accordion-container-1").load(url)
。Ex。
从您的评论我看你必须通过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结果更新为容器。Ex。
在当你通过循环,你必须创建链接(点击上已加载通过Ajax的内容)通过Ajax.ActionLink
方法,你也必须包括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));
}
你应该有一个局部视图,或者与名称Tracking.cshtml
和局部视图内您必须创建html代表您正在谈论的记录的详细信息。
Tracking.cshtml
@model TrackingModel
<div>
@Html.DisplayFor(...)
...
</div>
当调用从jquery的或通过Ajax动作的动作Tracking
(如我先前所描述的),你将得到你可以加载到像DIV特定容器的局部视图的html 。
告诉你我现在在哪里。点击使用Jquery Ajax我请求我的控制器并获取Json格式的数据(我更喜欢局部视图)。但数据是原始格式。我需要自行应用所有的html。而且我还需要为我的div设置内部html。 – 2012-07-19 11:40:48
类似于Zach在他的方法中建议的 – 2012-07-19 11:41:52
难道你不能更改动作返回部分视图吗?如果没有,那么你必须尝试jQuery模板将JSON转换为html并更新div。 – VJAI 2012-07-19 11:50:50
这是一个基本的方法 当你需要提交某种形式和呈现局部视图结果
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
});
}
你不觉得写一个对象生成HTML的整个HTML是太多了。必须有某种方式将此对象作为模型传递给部分对象,并且它将自行处理所有事情。 – 2012-07-14 21:21:03
这是正确的,因为这种情况是第一个例子,你只需要将''('#someConteirner')。html(result);' – 2012-07-14 23:26:45
如何显示记录?在一些网格? – VJAI 2012-07-19 11:21:14
@Mark My Model是List。我遍历列表并写入表格行。但现在我把它改成了div结构。 –
2012-07-19 11:25:27
检查我的答案并提出您的意见 – VJAI 2012-07-19 11:34:24