我正在開發Web應用程序,其中主頁面包含兩部分:始終可見的常量塊和由3個部分視圖中的一個構成的信息塊。每個局部視圖都是AJAX請求的結果,並且只加載一次(在jQuery提供切換窗口之後)。它運行良好,但我遇到了一個問題。是否可以在部分視圖中放入JavaScript
部分視圖的html代碼包含常量塊和信息塊中使用的js函數。當頁面被加載時,這些函數可以「看到」對方,它的工作原理,但resharper無法找到函數聲明,並警告我這一點。由於可以在代碼中找到剃刀語法,我無法通過將它們轉移到外部js文件來解決問題。
我該怎麼辦?
謝謝。
更新:
最後我決定從解決意見分開我的js代碼的問題。所以,新的問題是如何將剃刀語法包含到js文件中或者可接受的替代方法是什麼。我發現的流行解決方案是使用全局變量,數據屬性和我更喜歡的一個 - John Katsiotis的RazorJS庫。
http://djsolid.net/blog/razorjs---write-razor-inside-your-javascript-files
我希望它會工作穩定做出ReSharper的快樂。
乾杯!
更新:
3年後我回憶起了這個問題,並決定根據我的經驗來更新它。事實上,現在我寧願不建議使用額外的庫。特別是如果你不是項目團隊中唯一的成員......如果你在所有的庫中都能得到保證,這會更好,它們受創建者和社區的支持,並且可以很容易地集成到你的IDE中(例如,如果使用特殊的語法) 。同樣,來自團隊的所有人都應該知道它是如何工作的。所以現在我建議做下一件事情:
- 把所有的JS保存在單獨的文件中。儘可能地隔離它。 爲其提供外部API。
- 從視圖中調用API函數。
- 將所有Razor生成的URL,短信,常量作爲資源參數傳遞。
例如:
js文件:
$.api.someInitFunction = function(resources){ ... }
查看:
<script>
$.api.someInitFunction({
urls: { myAction: '@Url.Action("MyAction", "MyController")' },
messages: { error: '@errorMessage' },
consts: { myConst: @myIntConst }
});
</script>
我不能決定什麼答案是更有用的我:) – Tomy
感謝和歡迎到Stackoverflow :) –
這是一個愉快的開始這樣一個不錯的接待,非常感謝! – Tomy