首页 > 解决方案 > 替换html输入中的引号

问题描述

我有一些来自模型的字符串,并正在从中进行 html 输入。或多或少如下:

@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<dynamic>
@{
    this.Layout = "Views/Shared/Bootstrap.cshtml";
}
<input id="ModelDescription" type="hidden" value='@if(this.Model.Model.Description != null)
{
    @this.Model.Model.Description.Replace('a','b')
} ' />

这一切都很好。我已经设法在其中将 a 替换为 b (我继承的代码不是最稳定的东西)并且它有效,仅作为示例。

正如您可能已经收集到的那样,我们遇到了报价问题。一些用户会输入如下内容:

山姆的弟弟说“我不喜欢苹果”。

这当然意味着我们的输入变为:

<input id="ModelDescription" type="hidden" value='Sam's little brother said "I don't like apples".' />

这意味着唯一被渲染的是

山姆

编辑-维卡斯的回答给了我...

<input id="ModelDescription" type="hidden" value="@if(this.Model.Model.Description != null)
{
    @this.Model.Model.Description.Replace("&#34;","&#quot;")
} " />

标签: htmlrazordouble-quoteshtml-inputsingle-quotes

解决方案


使用双引号代替单引号 (""),如下所示:

<input id="ModelDescription" type="hidden" value="Sam's little brother said &#34;I don't like apples&#34;." />

推荐阅读