在MVC3中使用JQuery渲染局部视图
我有一些记录。点击每一条记录后,信息需要显示在手风琴上 这些信息应该是从数据库中动态获取的 到目前为止我所做的是 创建局部视图。假设显示详细信息 单击记录后,我调用jquery方法并在控制器上执行我的方法。控制器返回Json形式的对象(或任何其他东西,开放供任何建议) 现在JQuery方法有了那个(Model)对象,但我如何使用它来 从中呈现我的局部视图 这是一个基本的方法 当您需要提交一些表单并作为结果呈现局部视图时在MVC3中使用JQuery渲染局部视图,jquery,ajax,asp.net-mvc,asp.net-mvc-3,partial-views,Jquery,Ajax,Asp.net Mvc,Asp.net Mvc 3,Partial Views,我有一些记录。点击每一条记录后,信息需要显示在手风琴上 这些信息应该是从数据库中动态获取的 到目前为止我所做的是 创建局部视图。假设显示详细信息 单击记录后,我调用jquery方法并在控制器上执行我的方法。控制器返回Json形式的对象(或任何其他东西,开放供任何建议) 现在JQuery方法有了那个(Model)对象,但我如何使用它来 从中呈现我的局部视图 这是一个基本的方法 当您需要提交一些表单并作为结果呈现局部视图时 function GetView(){ if ($('#MyHtmlForm
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
});
}
我有一些记录。单击每个记录时,都会显示信息
需要用手风琴演奏
有两种方法可以实现你的愿望。我猜您必须返回操作的局部视图,以提供有关记录的详细信息
$(“#accordion-container-1”)。加载(url)
orderNo
操作作为参数传递。因此,您必须将orderNo
设置为id,或者将其附加到某个字符串中(以避免元素中重复id),然后设置锚链接的id
那么
Ajax.ActionLink
创建一个动作链接,该链接通过Ajax调用一些控制器动作,并将html结果更新到容器中ajax.ActionLink
方法创建链接(点击时必须通过ajax加载内容),还必须包含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,它代表您所谈论的记录的详细信息
Tracking.cshtml
@model TrackingModel
<div>
@Html.DisplayFor(...)
...
</div>
@model TrackingModel
@Html.DisplayFor(…)
...
当您从jquery或通过ajax操作调用action
Tracking
(如我前面所述)时,您将获得部分视图html,您可以将其加载到特定容器(如div)中。您不认为从一个对象编写整个html来生成html太多了吗。必须有某种方法将此对象作为模型传递给部分对象,它将自己完成所有操作。没错,对于第一个示例,您只需将html准备好$('#someConteirner').html(结果)代码>如何显示记录?在某个网格中?@标记我的模型是列表。我循环浏览列表并写入表行。但现在我把它改成了div结构。检查我的答案并给出你的评论让我告诉你我现在在哪里。单击使用jQueryAjax后,我请求我的控制器并以Json格式获取数据(我更喜欢局部视图)。但数据是原始格式的。我需要自己应用所有的html。我还需要为我的div设置内部html。类似于Zach在他的方法中所建议的,您不能更改操作return partial view吗?如果没有,那么您必须尝试jquery模板将JSON转换为html并更新divs。那么,这个方法是否会返回部分视图的模型,然后我只需要使用返回的模型渲染部分视图?你能发布你的操作代码吗?我不太明白你在想什么
@model TrackingModel
<div>
@Html.DisplayFor(...)
...
</div>