Замена кавычек в HTML-вводе - PullRequest
0 голосов
/ 09 октября 2018

У меня есть несколько строк, проходящих через модель, и я делаю 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;")
} " />

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Вы можете использовать @Html.Raw и троичный оператор для показа одинарных и двойных кавычек, например:

<input id="ModelDescription" type="hidden" 
       value="@Html.Raw(this.Model.Model.Description != null ?
              @this.Model.Model.Description.Replace('a','b') : "")" />

Приведенный выше код сгенерирует HTML-разметку, как показано ниже:

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

Примечание: Лучше использовать @Html.HiddenFor() вместо ручной настройки атрибута value таким образом.

Демонстрация: .NET Fiddle

0 голосов
/ 09 октября 2018

используйте двойные кавычки вместо одинарных кавычек (""), как показано ниже:

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