在使用.net MVC,時,razor渲染可以幫助我們使用@value來將value的值加載到html文本中,但是,它是嚴格的字符串顯示,即,如果value是“hello world”,他會將Hello world 替換到@value的位置。
這個嚴格替換一定要注意。
它帶來的問題是,當我們在javascript中使用它的值時,var str=@value; 在解析或會變成var str=hello world,很明顯,和普通的變量不同,他不會自動添加雙引號,這樣語法上是有問題的,執行時,javascript會報錯。
進一步,我們對它手動添加雙引號var str="@value";當替換后,理論上是var str="@value"; 這樣沒問題,但是如果這個一個標簽字符串則行不通,因為,會報錯:字符串常量沒有終止符,
為什么呢?因為手動加的雙引號是不能跨行的,而帶html標簽的字符串,標簽中是有自動換行這種格式控制的,所以這樣做並不安全,不健壯。
顯示html字符串,我們通常可以使用
1.document.write(value);
2.$("#table_div").html(value);
但是@value作為參數傳入,他不是一個字符串,所以會報語法錯誤,怎么正確輸出一個html標簽呢,下面是研究出來的解決方法
使用隱藏標簽<input id="hidden_table" type="hidden" value="@value" />
var str=$("hidden_table").val();
$("#table_div").html(str);
這樣就可以將字符串轉化為html啦。
(使用document.write和$("#element").html只要傳入html標簽的文本就能正確解析,但是注意如果是@razor需要將@razor轉化為字符串格式)