簡體   English   中英

如何將Javascript數組傳遞給視圖? (MVC4)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM