我有一些記錄。點擊每條記錄後,需要用手風琴顯示信息。在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