我正在使用ASP.Net MVC 3 Razor視圖引擎。MVC 3 Razor視圖:從布爾模型值生成JavaScript
我有一個要求,在我的視圖中根據我的View Model中的值生成一些JavaScript代碼。我需要使用的值是一個布爾值,因爲這個例子可以叫它IsSet
。
所以我想要做的就是根據這個值創建一個JavaScript布爾值,我可以在稍後的腳本中使用它。
請記住,所有下面的示例我有這段代碼在我的視圖頂部...
@{ string IsSet = Model.IsSet ? "true" : "false"; }
注意:以下例子是JavaScript的。
首次嘗試 ...
var IsSet = @(IsSet);
...這實際工作中,問題是它打破了自動格式化在VS 2010中(CTRL + E,d)由於格式錯誤JavaScript--正如你所期望的那樣,這是不可接受的。
第二次嘗試 ...
var IsSet = "@(IsSet)";
...我知道,JavaScript是聰明的,它會在需要的時候自動分析我的字符串。哎呀,忘了它是一個字符串類型,除空以外的任何其他值都爲真。
第三次嘗試 ...
var IsSet = Boolean("@(IsSet)");
....這肯定會工作......不,重新轉換爲非空字符串爲真(糟糕的解析器!)
四嘗試 ...
var IsSet = "@(IsSet)" === "true";
最後,一些工作,但它不看起來不錯。
我會用這個,如果需要但最終我的問題是:有沒有更好的方法來處理這種情況?也許,我第一次嘗試的不良行爲只是微軟可能忽略的一些東西?
如果有人對我有第五次嘗試,那會很好。
對我來說,重要的是,自動格式在VS 2010不破
感謝
我不得不同意你的第一次嘗試 - 看起來對我來說最自然,因爲你沒有進行字符串化處理,然後投射一些已經是布爾值的東西!我在Razor/JS代碼中使用過這種技術,它似乎工作正常,我沒有看到自動格式化的任何問題,但我使用ReSharper,因此可能會自動修復它! – 2011-12-19 11:29:10
我使用ReSharper,我仍然遇到自動格式問題,所以我不確定這就是爲什麼你不打格式問題。自動格式化和大小寫問題發生在Pascal框架的Razor變量出現在格式化程序強制執行小寫命名的地方時,如HTML標記名稱或JS代碼(主要是camelCase;特別是格式化程序在自動縮進時啓用發生......所以克里斯,我有一個預感,你可能有不同的場景? – 2015-03-23 18:46:49