当我尝试将数据从 asp 文本框发布到数据库时出现错误。这是因为使用 html 文本编辑器,文本是 html。
但是,当我尝试对 html 进行编码时,出现以下错误:BC30451:未声明“绑定(bind)”。由于其保护级别,它可能无法访问。
下面是导致错误的文本框的 asp 代码。
<asp:TextBox ID="TxtBx" runat="server" Text='<%# Server.HtmlEncode(Bind("Details").ToString())%>'/>
我确定这是小问题,但无法解决。我也尝试了以下相同的结果:
Text='<%# System.Web.HttpUtility.HtmlEncode(Bind("Details"))%>'
我还尝试在后端创建我自己的函数以使用以下 asp 和 vb 解决此问题:
Text='<%# encodeIT(Eval("Details"))%>'
Public Function encodeIT(Details As String) As String
Return HttpUtility.HtmlEncode(Details)
End Function
如有任何帮助,我们将不胜感激。
更新 1
我已经尝试了一个客户端解决方案,但似乎仍然无法正常工作,不确定我是否遗漏了什么,我一直在一个基本的网络项目中进行测试,以避免可能出现的任何兼容性问题。出于此测试的目的,我删除了数据绑定(bind),因为无论如何 ASP 都会抛出相同的错误。
ASP
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<script src="../Scripts/tinymce/tinymce.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
tinymce.init({
menubar: false,
width: 800,
height: 250,
selector: "textarea"
});
var decodeStuff = (function () {
// preventing any overhead from creating more than one instance of the function
var element = document.createElement('div');
function decodeHtml(str) {
if (str && typeof str === 'string') {
// strip script and html tags
str = str.replace(/<script>[^>]*>([\S\s]*?)<\/script>/gmi, '');
str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
element.innerHTML = str;
str = element.textContent;
element.textContent = '';
}
return str;
}
return decodeStuff;
});
var text = decodeStuff('TxtBx');
});
</script>
<asp:Panel runat="server" ID="panel1">
<table>
<tr>
<td>
<asp:TextBox ID="TxtBx" runat="server" Width="100%" TextMode="MultiLine" Rows="20"></asp:TextBox>
</td>
</tr>
代码隐藏 (VB),我试图在回发时调用该函数。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If DDL.Text <> "Select" Then
TxtBx.Text = DDL.Text``
End If
Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "TxtBx", "decodeHtml();", True)
End Sub
最佳答案
如果这仅供内部使用,请进入 Web 配置文件并在 system.web
内你会发现httpRunTime
和 Pages
添加属性 requestValidationMode="2.0"
和 validateRequest="false"
分别。
代码:
<httpRuntime requestValidationMode="2.0"/>
<pages validateRequest="false"/>
关于javascript - 回发问题上的html编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25408779/