為什麼將模型值分配給 JavaScript 時,ASP.Net MVC 2.0 中沒有智能感知?
我正在嘗試在我的內容頁面中將一些模型屬性添加到我的 JavaScript 中:
$(document).ready(function () { createPager(1, <%=Model.TotalPages %>); createUnprocessedPager(1, <%=Model.TotalUnprocessedPages %>); });有誰知道這是否是設計使然?您不是打算將模型屬性與 JavaScript 結合起來嗎?或者這是一個錯誤?
這按預期工作。
<% ... %>但是,在實際編寫程式碼時,標籤中沒有任何智能感知。如果我在標籤中編寫任何程式碼<script>,那麼就沒有智能感知。如果我直接在標籤下</script>輸入<% Model.... %>然後繁榮,我再次擁有智能感知。更新:2010 年 10 月 22 日
剛剛閱讀了Scott Guthrie 的最新博文,看來這個功能很快就會隨著即將發布的 ASP.Net MVC 3 發布(也可能用於測試版):
注意:本月初的 Beta 版尚未啟用 Razor 文件中的 Visual Studio 程式碼/標記智能感知和著色。不過,您會在幾週後看到它出現 - 它將支持 Razor 文件中 HTML、JavaScript、CSS 和 C#/VB 程式碼的完整程式碼智能感知。
您將在引號“”內的視圖中失去智能感知,例如屬性。
<input type="text" value="<%= DateTime.Today.ToShortDateString() %>" />或者如果它出現在 Javascript 塊內。
<script type="text/javascript"> <%= DateTime.Today.ToShortDateString() %> </script>我認為在這些場景中應該有 Intellisense,所以我會說這是一個錯誤,並希望 Visual Studio 的未來更新能夠解決和解決這個問題。
我認為也沒有語法突出顯示。不確定這是錯誤還是功能,但是 AFAIK,以這種方式組合程式碼並不是一個好習慣。通常內聯 javascript 不是一個好習慣,但是如果您使用它,將 Model 屬性與之結合,然後決定將腳本提取到單獨的 js 文件中,您的程式碼將會中斷。因此,使用模型屬性填充隱藏欄位並使用 jQuery 在 js 中讀取它們是很常見的,例如:
<input type="hidden" id="valTotalPages" value="<%=Model.TotalPages %>" /> <input type="hidden" id="valTotalUnprocessedPages" value="<%=Model.TotalUnprocessedPages %>" /> ... // in js $(document).ready(function () { createPager(1, $("#valTotalPages").val()); createUnprocessedPager(1, $("#valTotalUnprocessedPages").val()); });所以缺乏語法高亮和智能感知可能是一個錯誤,但也可能是阻止某些程式碼模式的一種方式。