保存含有<>字符与字符串的字符串

保存含有<>字符与字符串的字符串

问题描述:

我正在建立一个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'); 
} 

例如,如果我过去并尝试保存以下,没有单一的引号失败:

'< '一些代码'>'

谢谢!

+1

当“失败”时会发生什么? –

我相信这个问题是由于你没有编码你的输入。 (您没有对错误阐述,所以这是一个最好的猜测。)反正,尝试用你输入的这样做:

encodeURI($('#snippetAdd').val()) 

这个HTML编码你的字符串,用自己编码的等效替换特殊字符。您当然必须在服务器端解码您的字符串,以重新组合在该字段中输入的原始代码。

@LeviBotelho有正确的做法。但是,您也可以选择告诉MVC不通过注释的控制器以验证输入的数据:

[HttpPost, ValidateInput(false)] 
public ActionResult Index(MyModel model) 
{...} 

注:这是不是最安全的方法,因为它让你的服务器开放给潜在的脚本注入攻击。如果您信任用户并立即在服务器端执行编码,则应该使用它。