簡體   English   中英

將復雜對象從視圖發送到 MVC 操作作為無 ajax 調用

[英]Send complex object from view to MVC action as none ajax call

我正在開發一個ASP.NET MVC Web 應用程序。 有一個帶有一堆搜索過濾器的視圖,頁面中間還有一個表示搜索結果的網格。

最終用戶為搜索過濾器設置值,當單擊搜索按鈕時,ajax 調用將返回將重新綁定網格的值。 網格中的每一行都代表“ ItemId ”和“ version ”,它們可以通過復選框選擇。

最后,當用戶點擊“ Detail report ”時,我們需要將用戶重定向到另一個頁面(視圖)。

我需要將選定的搜索過濾器和網格選定的行值作為這樣的數組(ItemIds[] and Versions[])傳遞給“ Detail ”操作。

所以,把問題說清楚。 我需要將以下值傳遞給操作:

  1. 搜索過濾器
  2. ItemId 數組
  3. 版本數組

不幸的是,我無法將參數傳遞給操作。 我得到了空

當我使用時,我不能將操作稱為 ajax 調用

查看 ( Index.cshtml )

 function prepareSelectedInfos() {
            var formValues = $('#form').serializeFormToObject();
            var gridValues = GetGridSelectedValues();
            var dto = {
                FormFilters: formValues,
                ItemIds : gridValues.ItemIds,
                Versions : gridValues.Versions
            } 
            return dto;
        }


  $('#lnkDetailReport').click(function () {
            var gridValues = GetGridSelectedValues();

            var url = '/Report/Controller/Detail/';
            var dto = prepareSelectedInfos();
            window.open(url + dto, '_blank');
        });

控制器

  public ActionResult Detail(ModelVersionStatisticalDetailDto data)
        {

            //create a ViewModel according to the incoming data
            var viewModel = ;
            return View(viewModel);
        }

模型

  public class ModelVersionStatisticalDetailDto
    {
        public ModelVersionStatisticalReportDto FormFilters { get; set; }
        public int [] ItemIds { get; set; }
        public string[] Versions { get; set; }
    }

我需要在 Detail 操作中准備好視圖值

據我所知,在 ajax 調用中發布復雜對象(使用相同的發布參數)后,無法執行重定向。 為了執行您想要的操作,您可以從下面選擇一個解決方案。

  1. Detail操作中使用查詢字符串並執行簡單的 post 操作而不是 ajax 調用
  2. 嘗試用Partial View替換Detail action 的響應
  3. 如果您正在尋求客戶端解決方案,您可以從 localStorage 對象(一個棘手的解決方案)中提供幫助。 您可以將所需數據存儲在 localStorage 對象中,並將密鑰傳遞給控制器​​。 在目標頁面中,使用鍵來獲取存儲在存儲中的數據。 完成后不要忘記清除它。 https://blog.logrocket.com/the-complete-guide-to-using-localstorage-in-javascript-apps-ba44edb53a36/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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