【发布时间】:2019-05-17 16:49:59
【问题描述】:
我在 Viewbag 的 HTML 标签中设置了一个字段,该字段的文本中有 "'"。当 HTML 拉起时,它显示 ' 代替 "'"。如何阻止它被编码?
请在下面找到代码。
在 HTML 视图中设置文本文件。
$('#thStudentName').text('@ViewBag.Name');
if (sessionData.data.EventDate2Def != '' || sessionData.data.EventDate2Def != null)
$('#tdWhen').text(sessionData.data.EventDate1Def + ' and ' + sessionData.data.EventDate2Def);
else
$('#tdWhen').text(sessionData.data.EventDate1Def);
$('#tdWhere').text(sessionData.data.FacilityName);
$('#tdLocated').text(sessionData.data.Address1 + ', ' + sessionData.data.City + ', ' + sessionData.data.State + ' ' + sessionData.data.Zip);
$('#tdPhone').text(sessionData.data.Phone);
$('#tdDirections').text(sessionData.data.Directions);
$('#tdRoom').text(sessionData.data.RoomNumber);
使用动态数据填充不同的部分。
函数 populateSessionTable() {
var count = 1;
$('#SessionTable').html('');
var tableContent = '';
var record = '';
var Sessions = sessionData.data.Sessions;
tableContent = generateTableContent(count, Sessions[0].StartDateTimeDef);
tableContent += '</tbody></table></div>';
$('#SessionTable').html(tableContent);
var radioStatus = '';
for (var i = 0; i < Sessions.length; i++) {
var content = Sessions[i];
radioStatus = '';
if (content.Capacity == content.Registered || content.Closed)
radioStatus = '<input disabled class="selected-session radio" name="SessionId" type="radio" value="' + content.SessionId + '">';
else if (content.StartDateTimeDef == '@ViewBag.WorkshopDateDef' && t24to12Convert(content.StartTimeString) == t24to12Convert('@ViewBag.WorkshopTime'))
radioStatus = '<input class="selected-session radio" checked name="SessionId" type="radio" value="' + content.SessionId + '">';
else
radioStatus = '<input class="selected-session radio" name="SessionId" type="radio" value="' + content.SessionId + '">';
record += '<tr>';
record += '<td class="session-schedule-table-btn">';
record += radioStatus;
record += '</td>';
record += '<td class="session-schedule-table-session-number"> ' + content.Number + ' </td>';
record += '<td class="session-schedule-table-session-start-time">' + t24to12Convert(content.StartTimeString) + '</td>';
record += '</tr>';
$('#SessionTBody' + count).append(record);
record = '';
if(Sessions.length != i + 1)
{
if(Sessions[i].StartDateTimeDef != Sessions[i + 1].StartDateTimeDef)
{
tableContent = '';
count++;
tableContent = generateTableContent(count, Sessions[i+1].StartDateTimeDef);
tableContent += '</tbody></table></div>';
$('#SessionTable').append(tableContent);
}
}
}
}
populateSessionTable();
预览以正确的格式显示名称,但是当它被渲染而不是引用时,它显示'
【问题讨论】:
-
为什么会有问题?它仍应呈现为引号。
-
这不是 URL 编码,它是一个 HTML 实体。 URL 编码类似于
%39。 -
我无法重现问题:jsfiddle.net/barmar/sj1d2ybe/2
-
text()不转换值。它只是将其创建为Text 节点。 -
我怀疑 Viewbag 实际上有
&39;,所以你需要使用.html()而不是.text()。
标签: javascript jquery asp.net asp.net-mvc