2017-04-26 29 views
0

我使用Server.HtmlEncode如何通過Server.HtmlEncode在阿賈克斯jQuery的方法

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

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功能

dropdown-獲取數據 對於我

<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);   
     } 
    } 

現在的名字,因爲名字不匹配,我沒有得到的值, 的,我需要這個值
EG-Capacit的Infraprojects有限公司編碼爲Capacit &#39; E」 Infraprojects有限公司

那麼只有它會匹配,我將獲得的數據...

我試圖

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

不工作

+0

不會使用某種公司ID的做出比名字更有意義? – Liam

回答

0

也許你可以使用正則表達式替換' EQ:

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

首先,你需要使用JavaScriptStringEncode所以用替代

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

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

另請注意使用@Html.Raw(...)。這將防止MVC在渲染輸出時應用html編碼。

其次,要解決你的代碼構建李項目,我建議使用這樣的方法:

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

我越來越編碼值有Capacit ' e我想它解碼Capacit'e – Dinup

+0

而當我使用您的代碼點擊事件不起作用 – Dinup

+0

你確定你已經刪除了你的電話到HtmlEncode,你也使用@ Html.Raw (......)?當使用JavascriptEncode 只需嘗試將下面的代碼放到您的視圖中,然後在havascript控制檯中檢查頁面源代碼或調用'alert(a);': '' –