簡體   English   中英

如何在ajax jquery方法中傳遞Server.HtmlEncode

[英]How to pass Server.HtmlEncode in ajax jquery method

我正在使用Server.HtmlEncode

編碼字符串,因為它不支持撇號

Example-"Capacit's Infraprojects Limited" changes  to 
 "Capacit&amp;#39;e" Infraprojects Limited <br>
So I used  Server.HtmlEncode to resolve it 

 <a onclick="setOfferDocument('@Server.HtmlEncode(documents.CompanyName)')"  class="link-download" href="javascript:void(0)" 
 >@Server.HtmlDecode(documents.CompanyName)</a>

現在我有一個下拉列表,單擊公司名稱可以在其中獲取數據,為此我使用了ajax函數

落下-

<select id="single-appendSpeaker" onchange="GetSelectedOfferData()" class="select2" style="width:;">    
            <option value="All">All</option>       
                         </select>     

Ajax函數我從哪里獲得公司名稱

function GetSelectedOfferData() {
    debugger;
        var companyName = $("#single-appendSpeaker").val();
        if (companyName == "All") {
            $.ajax({
                type: "POST",
                dataType: "json",
                url: "/OfferDocument/getAllOfferDocument",
                data: {},
                success: function (result) {
                    var doc = '';


                    $.each(result, function (i, val) {
                        doc = doc + '<li><a onclick="setOfferDocument(\'' + val.companyName  + '\')"  class="link-download" href="javascript:void(0)" >' + val.companyName  + '</a><br /></li>'
                    });
                    $("#ProspectUL").empty();
                    $("#ProspectUL").append(doc);
                }
            });           
         }
        else {
            var data = '';    

            data = data + '<li><a onclick="setOfferDocument(\'' + companyName  + '\')"  class="link-download" href="javascript:void(0)" >' + companyName + '</a><br /></li>'
            $("#ProspectUL").empty();
            $("#ProspectUL").append(data);           
        }
    }

現在,由於名稱不匹配,我沒有得到該值,為此,我需要對該值進行編碼
例如-Capacit's Infraprojects Limited改為Capacit&e“ Infraprojects Limited

然后只有它會匹配,我會得到數據...

我試過了

 doc = doc + '<li><a onclick="setOfferDocument(\'' + @Server.HtmlEncode(val.companyName)  + '\')"  class="link-download" href="javascript:void(0)" >' +@Server.HtmlEncode(val.companyName)  + '</a><br /></li>'
                        });

無法運作

也許您可以使用正則表達式替換'eq:

var regexp = new RegExp(/'/g);
var s = "Capacit's";
console.log(s.replace(regexp, "&#39;e"));

首先,您需要使用JavaScriptStringEncode因此請替換

<a onclick="setOfferDocument('@Server.HtmlEncode(documents.CompanyName)')"...

有:

<a onclick="setOfferDocument('@Html.Raw(System.Web.HttpUtility.JavaScriptStringEncode(documents.CompanyName))')"

另請注意@Html.Raw(...)的用法。 這將防止MVC在呈現輸出時應用html編碼。

其次,為了修復構建li項目的代碼,我建議使用如下方法:

$('<a class="link-download" href="javascript:void(0)">').click(function(){ setOfferDocument("" + companyName)} );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM