我正在使用Server.HtmlEncode
对字符串进行编码,因为它不支持撇号
Example-"Capacit's Infraprojects Limited" changes to
"Capacit&#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函数我在哪里获得了comapny的名称
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的Infraprojects仅限于Capacit&amp;#39; e&#34; 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>'
});
不工作
答案 0 :(得分:0)
也许你可以使用正则表达式替换' 当量:
var regexp = new RegExp(/'/g);
var s = "Capacit's";
console.log(s.replace(regexp, "'e"));
答案 1 :(得分:0)
首先,您需要使用JavaScriptStringEncode
,因此请替换
<a onclick="setOfferDocument('@Server.HtmlEncode(documents.CompanyName)')"...
with:
<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)} );