亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Razor 中轉義 JS 的雙引號

在 Razor 中轉義 JS 的雙引號

C#
繁花如伊 2022-11-13 14:42:24
我正在使用 GoJS 庫繪制圖形。我試圖在頁面上顯示以下 JavaScript 代碼(這是我在完成加載后需要看到的頁面源代碼):myDiagram.model = new go.GraphLinksModel([    { key: "Node26", color: "lightgreen"},    { key: "Node25", color: "lightgreen"},    { key: "Node33", color: "lightgreen"},    { key: "Node42", color: "lightgreen"}], [    { from: "Node26, to: "Node25"},    { from: "Node26, to: "Node33"},    { from: "Node33, to: "Node42"},    { from: "Node33, to: "Node41"},    { from: "Node33, to: "Node57"},    { from: "Node33, to: "Node25"},    { from: "Node33, to: "Node34"}]);此代碼是在服務器上使用 razor 語法生成的,如下所示:@{    string nodes = "";    string links = "";    string childName;    foreach (Node node in Model.FullGraph)    {        nodes += "{ key: \"" + node.NodeName + "\"},";        @foreach (uint childId in node.ChildrenIds)        {            childName = Model.FullGraph.Find(x => x.NodeId == childId).NodeName;            links += "{ from: \"" + node.NodeName + "\", to: \"" + childName + "\"},";        }    }}    myDiagram.model = new go.GraphLinksModel([@nodes], [@links]);  但是,在加載結果頁面后,HTML 格式如下所示:myDiagram.model = new go.GraphLinksModel([    { key: "Node26", color: "lightgreen"},    { key: "Node25", color: "lightgreen"},    { key: "Node33", color: "lightgreen"},    { key: "Node42", color: "lightgreen"}], [    { from: "Node26, to: "Node25"},    { from: "Node26, to: "Node33"},    { from: "Node33, to: "Node42"},    { from: "Node33, to: "Node41"},    { from: "Node33, to: "Node57"},    { from: "Node33, to: "Node25"},    { from: "Node33, to: "Node34"}]); 用反斜杠轉義不起作用,代碼仍然用 " 替換雙引號,因此不繪制圖形。當我使用瀏覽器中的開發人員工具手動將它們替換回正常的雙引號時,會繪制圖形。我也嘗試過使用@轉義,Html.Raw()以及。什么都不管用。有人有什么建議嗎?提前感謝您的幫助!
查看完整描述

1 回答

?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

出于好奇,我同時嘗試了不同的選項,讓我分享我測試過的迭代。


我建立了一個小類進行測試:


public class ColoredObject

{

    public string key { get; set; }


    public string color { get; set; }

}

出于測試目的,創建了一個列表,其中添加了 2 個測試對象:


var list = new List<ColoredObject>()

{

    new ColoredObject()

    {

        key = "Node26",

        color = "lightgreen"

    },

    new ColoredObject()

    {

        key = "Node25",

        color = "lightgreen"

    }

};

撇號版本: 然后在 Razor 中創建 JSON 對象:


string nodesWithApostrophe = "[";


foreach (var i in list)

{

    nodesWithApostrophe += "{ key: '" + i.key + "', color: '" + i.color + "'},";

}


nodesWithApostrophe += "]";

因此,第一個工作正常并正確記錄到控制臺的解決方案如下所示:


let jsonObject = @Html.Raw(nodesWithApostrophe);

console.log('testJson with apostrophe', jsonObject);

http://img1.sycdn.imooc.com//637092040001df8c06570112.jpg

雙引號版本: 我對如何用雙引號創建對象也很感興趣,所以我更改為在 foreach 中轉義字符:


string nodesWithDQ = "[";


foreach (var i in list)

{

    nodesWithDQ += "{ key: \"" + i.key + "\", color: \"" + i.color + "\"},";

}


nodesWithDQ += "]";

在 JavaScript 中也做同樣的事情使其工作:


let jsonObject = @Html.Raw(nodesWithDQ);

console.log('testJson with double quotes', jsonObject);

http://img1.sycdn.imooc.com//6370920d0001f09f06560110.jpg

查看完整回答
反對 回復 2022-11-13
  • 1 回答
  • 0 關注
  • 171 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號