在下面的代码中,我正在我的控制器中构建一个字符串。在这个字符串中我使用单引号字符。我需要在渲染之前保护这个角色。首先,我尝试像 L \'affaire 这样的东西,但它不起作用(因为引号字符已经在我的助手中使用,见下文)。我成功了 L& #3 9; affaire (单引号的转义字符,没有空格)但也许还有更好的方法可以继续?
在我的控制器中,我准备了一个这样的字符串:
var builderAnchor = new TagBuilder("a");
builderAnchor.MergeAttribute("href", "#");
builderAnchor.InnerHtml = "Annuler";
var builderText = new StringBuilder();
builderText.Append("L'affaire " + affaire.IdAffaire + " a été supprimée. ");
builderText.Append(builderAnchor);
sessionWrapper.Notification = new HtmlString(builderText.ToString());
接下来,我从这样的视图中调用了一个帮助器:
public static IHtmlString ShowNotification(this HtmlHelper helper)
{
//...
returnedValue = "yellowNotification('" + helper.Encode(sessionWrapper.Notification) + "')";
return new HtmlString(returnedValue);
}
最后,所有这些东西产生如下的html:
yellowNotification('L'affaire 12345 a été supprimée');
非常感谢。
答案 0 :(得分:0)
我建议你使用JavaScriptSerializer类:
public static IHtmlString ShowNotification(this HtmlHelper helper)
{
//...
var serializer = new JavaScriptSerializer();
var value = serializer.Serialize(sessionWrapper.Notification);
returnedValue = string.Format("yellowNotification({0})", value);
return new HtmlString(returnedValue);
}
这将确保无论Notification字符串包含哪些字符,它都将被正确传递给yellowNotification
函数。
此外,我不太明白你所展示的第一个代码片段与第二个代码片段之间的关系是什么,但是确定这些代码在控制器中没有位置。