0

我正在构建一个 C# MVC 站点,我可以在其中保存代码片段。我使用 textarea 粘贴我的代码。当我尝试保存某些字符时它失败了。我正在使用 jqueryUI。

这是将我的 textarea 保存到数据库的函数,其中 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');
}

例如,如果我过去并尝试保存以下内容,但没有单引号,它会失败:

'<'一些代码'>'

谢谢!

4

2 回答 2

0

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

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

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

于 2012-12-05T13:32:35.990 回答
0

我认为问题出在您没有对输入进行编码这一事实。(您没有详细说明错误,所以这是一个最好的猜测。)无论如何,尝试使用您的所有输入执行此操作:

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

这个 HTML 编码你的字符串,用它们的编码等价物替换特殊字符。您当然必须在服务器端解码您的字符串,以重构在该字段中输入的原始代码。

于 2012-12-05T13:22:02.423 回答