[問題] ASP.NET MVC結合React
各位大大好~
我是剛學習React的新手
由於公司環境上使用ASP.NET MVC
想要前後分離,View用React來做,彼此間的溝通藉由web api
問題來了我自己寫好打包好的html、css、js
我不知道該怎麼做,才能在server上運作
server是使用IIS
查了網路上的文章,似乎蠻多都用React.net的package?
如果不使用這個的話,要怎麼做呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.84.179
※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1559266485.A.AF7.html
→
05/31 20:15,
5年前
, 1F
05/31 20:15, 1F
不好意思可能我觀念不太好
想請問一下"你到底是用mvc還是api"的意思是什麼呢?
因為我以為asp.net mvc中controller寫的get、post的class,就算是api了
※ 編輯: heavenbetula (111.185.94.38), 05/31/2019 21:26:00
→
06/01 00:07,
5年前
, 2F
06/01 00:07, 2F
推
06/01 00:12,
5年前
, 3F
06/01 00:12, 3F
→
06/01 22:58,
5年前
, 4F
06/01 22:58, 4F
推
06/02 19:25,
5年前
, 5F
06/02 19:25, 5F
感謝各位大大~由於會不知道怎麼在IIS運作是因為asp.net mvc好像包出來是個zip檔?
所以一直跟我以往的"直接將html css js放在server"上不太一樣所以很困惑
但現在好像知道了,就是將我包出來的這些檔案,放在asp.net mvc的某個資料夾
(假設叫Webpage),然後讓controller中的ActionResult指向這個Webpage資料的
index.html,然後就可以照asp.net mvc平常的運作方式去打包
只是又有一個問題是我啟動asp.net mvc模擬時,會出現:
http://localhost/main.css is not found.
http://localhost/bundle.js is not found.
資料夾路徑是這樣的:
Webpage----inde.html
bundle.js
main.css
我知道是因為我的React包出來的index.html檔中include的js路徑是相對於
這個index.html
而會跑出這個error的原因是因為實際的server路徑上根本沒有我打包出來的bundle.js
以及main.css
這個問題可實際手動調整index.html裡的引入路徑如將原本的
src="bundle.js"改為src="../Webpage/bundle.js"即可解決
但總覺得還有更好的方法,可以讓我以後React包完直接放在資料夾下都不用再調整...
請問可以透過設定asp.net mvc的什麼東西,達到這樣的功能嗎?
※ 編輯: heavenbetula (111.185.94.38), 06/02/2019 22:17:27
推
06/03 20:47,
5年前
, 6F
06/03 20:47, 6F
→
06/03 20:47,
5年前
, 7F
06/03 20:47, 7F
→
06/03 20:48,
5年前
, 8F
06/03 20:48, 8F
謝謝你~現在我只改了輸出之後的index.html裡的<base href="/Webpage/" />路徑的問題
就解決了!
只是又跑出一個問題...當我頁面reload的時候會404
爬文解決方法是在asp.net mvc路由設定的routes.MapRoute中
將原本的
url:"{controller}/{action}/{id}"
改為
url:"{*url}"
不過改成這樣子後,原本寫在controller的api又不知道怎麼去get post到他了...
※ 編輯: heavenbetula (111.185.94.38 臺灣), 06/03/2019 22:29:38
→
06/04 10:44,
5年前
, 9F
06/04 10:44, 9F
推
06/04 16:04,
5年前
, 10F
06/04 16:04, 10F
react靜態檔放在server上,Apache、nginx都有試過OK
實在是asp.net mvc走controller的方式讓我比較不懂
不過感謝~現在.net mvc routing的設置我也解決了
總之我目前是設兩個routes.MapRoute
第一個路由的url寫成url:"{url}"
第二個的路由維持預設url:"{controller}/{action}/{id}"
之前爬文把第一個的路由url:"{*url}"加了*符號,雖然頁面reload 404的問題解決
但這會導致,當url的路徑為controller名稱時,無法匹配到第二個路由去
所以ajax 的get post根本無法跑進controller去運作
因此只要不要加*符號,兩個問題看起來是解決了!
※ 編輯: heavenbetula (111.185.94.38 臺灣), 06/04/2019 21:51:58
Web_Design 近期熱門文章
PTT數位生活區 即時熱門文章