[英]How to pass a Javascript Array to a View ? (MVC4)
我正在其中一個視圖中使用jquery數據表,並希望生成具有過濾數據結果的報告,因此要生成報告,我能想到的最簡單的解決方案是生成pdf文件(在視圖中),無論如何,要獲得過濾結果,我使用以下方法:
myDataTableHandle = $('#example1').dataTable(...);
var myFilteredRows = myDataTableHandle._('tr', {"filter":"applied"});
通過單擊從js文件打開視圖,我發現我可以使用類似以下內容的東西:
function foo(id) {
var url = '@Url.Action("Details", "Branch", new { id = "__id__" })';
window.location.href = url.replace('__id__', id);
}
現在我想知道是否有一種方法可以將js數組傳遞給MVC視圖,換句話說,就是myFilteredRows,或者是否有另一種方法將過濾結果傳遞給控制器,然后從那里調用視圖?
我希望我的問題很清楚
在我看來,您在理解這件事是如何工作上存在空白。 在您編寫的js代碼(foo(id))中,您沒有調用視圖,您是在向服務器端發出請求,因此這是通過控制器傳遞的(正在調用action方法分支-在此處放置一個斷點)檢查),然后該action方法調用該視圖,並且該視圖將在客戶端返回給您。
同樣在函數中,您將id參數傳遞給控制器的操作方法,您可以通過相同的方式將數組作為字符串傳遞,但是您將需要為該操作方法更新控制器上的簽名。
public ActionResult Branch(int id, string array)
然后,您需要編輯視圖以從控制器接受此數組,方法是將其添加到視圖包中
ViewBag.array = array
或者,如果分支視圖接受模型,則可以將其添加到模型中。 在視圖中,您將必須在js塊中定義一個數組以接受此操作,類似這樣的操作(這可能無法正常工作,您必須在瀏覽器中調試js,直到正確為止)
var array = [@ViewBag.array];
視圖是HTML內容的MVC術語,這是我們在服務器端處理的事情,您的控制器在MVC框架的幫助下使用視圖將數據從控制器傳遞到視圖。 當您談論客戶端時,現在談論視圖變得模糊。 希望您理解這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.