iT邦幫忙

0

MVC Controller 共用變數一問

今天有一個表單輸入頁面,一開始載入畫面時的(A)Controller會先去呼叫API把資料存進model裡面,之後使用者輸入完資料Ajax送出後會另外呼叫(B)Controller把資料送出去。

如果要在(B)Controller使用到(A)Controller的model,目前想到的方法有以下幾點

  1. 把model丟到ViewModel裡面,輸入完後再一起發給(B)Controller (個人不太喜歡這個,Ajax組model不方便)
  2. 使用TempData['xxx'],但只保留一個Request,怕這樣會不會有意外發生

想詢問各位大大,不知道有沒有推薦其他更方便的做法呢?
懷念WebForm宣告一個Public大家一起共享的美好時光/images/emoticon/emoticon02.gif

2 個回答

1
暐翰
iT邦大師 3 級 ‧ 2019-03-15 12:25:30
最佳解答

擔心TempData生命週期太短問題,可以使用Session

(A)Controller會先去呼叫API把資料存進model裡面

A Controller儲存資料到Session

Session["Model"] = Model

輸入完資料Ajax送出後會另外呼叫(B)Controller把資料送出去。

B Controller將儲存資料送出

SendData(Session["Model"])

注意

  • 預設存活時間為20分鐘
  • 會增加Server負擔,因為資料緩存在Server

另外假如要減輕Server負擔,可以送到在前端使用者使用Javascript儲存到瀏覽器
注意資安資料要記得加密處理

0
小魚
iT邦高手 1 級 ‧ 2019-03-15 12:17:48

可以具體一點嗎?

我要發表回答

立即登入回答