2012-04-04 110 views
5

我正在使用ASP.NET,并且我在数据库中有一个HTML字符串。在JavaScript中存储Html.Raw()中的字符串,ASP.NET MVC 3

我想在客户端获取该html到一个变量。

如果我这样做:

var x = '@Html.Raw(myModel.FishValue)' 

它工作得很好,因为它本质上是做

var x = '<p>hello!</p>'; 

但是如果在它打破了网页的HTML报价。

我最初的猜测是对.Replace原始字符串转义添加到报价,但双方.ToString().ToHtmlString()(如Html.Raw返回IHtmlString)不产生相同的标记一样简单Html.Raw()

所以我不知道该怎么做。

回答

9

在拨打Html.Raw方法之前更换什么?

var x = '@Html.Raw(myModel.FishValue.Replace("'","\\'"))' 

UPDATE:

有可能是在字符串中的其他字符转义从模型中来。出于这个原因,我会建议首先替换斜杠。当然,这一切都取决于您的模型中可能来自服务器的内容。

var x = '@Html.Raw(myModel.FishValue.Replace("\\","\\\\'").Replace("'","\\'"))' 

代表在JavaScript中的行为的示例代码段:如果您需要在HTML客户端上的解码

var x = '@(System.Web.HttpUtility.HtmlEncode(myModel.FishValue))'; 

//Let's say my Model Content is > I'd Say \ is a escape character. You can't "Escape" 
 
    // YOu would have to replace ' --> \' and \ --> \\ 
 
    var stringFromServer = 'I\'d Say \\ is a escape character. You can\'t "Escape"' 
 
    alert(stringFromServer)

1

试试这个边使用

unescape(x) 

我认为JQuery(不知道你是否使用它)处理编码的HTML字符串,所以你可能不需要unescape()。

相关问题