保存含有<>字符与字符串的字符串
问题描述:
我正在建立一个C#MVC网站,我可以保存代码片段。我用textarea粘贴我的代码。我尝试保存某些字符时失败。我正在使用jqueryUI。保存含有<>字符与字符串的字符串
这是节省了我的textarea的DB,其中snippetAdd是我的textarea的ID的功能:
function addSnippet() {
$("#newSnippet").show();
var myStuff = { snippetCode: $('#snippetAdd').val(), lexiconId: $('#lexiconId').val(), snippetDesc: $('#snippetDescAdd').val() };
var aURL = "/Lexicon/addSnippet";
$.post(aURL, myStuff, function(data) { parseMessage(data); }, 'json');
}
例如,如果我过去并尝试保存以下,没有单一的引号失败:
'< '一些代码'>'
谢谢!
答
我相信这个问题是由于你没有编码你的输入。 (您没有对错误阐述,所以这是一个最好的猜测。)反正,尝试用你输入的这样做:
encodeURI($('#snippetAdd').val())
这个HTML编码你的字符串,用自己编码的等效替换特殊字符。您当然必须在服务器端解码您的字符串,以重新组合在该字段中输入的原始代码。
答
@LeviBotelho有正确的做法。但是,您也可以选择告诉MVC不通过注释的控制器以验证输入的数据:
[HttpPost, ValidateInput(false)]
public ActionResult Index(MyModel model)
{...}
注:这是不是最安全的方法,因为它让你的服务器开放给潜在的脚本注入攻击。如果您信任用户并立即在服务器端执行编码,则应该使用它。
当“失败”时会发生什么? –