Предположим, у вас есть большой проект, написанный на c ++, который содержит тысячу файлов .cpp и тысячу файлов .h. И давайте предположим, что проект также зависит от десяти статических библиотек. Скажем, мы работаем над Windows, и мы строим наш проект в Visual Studio 20xx. Когда вы нажимаете Ctrl + F7 Visual Studio, чтобы начать компиляцию всего решения (предположим, что у нас есть только один проект в решении)
В чем смысл компиляции?
Второй этап компиляции выполняется Linker.Linker должен объединить весь объектный файл и построить окончательно вывод (который может быть исполняемым или библиотекой)
Шаги по связыванию проекта
error LNK2001: unresolved external symbol "void __cdecl foo(void)" (?foo@@YAXXZ)
Наблюдение
Как решить эту ошибку
Ошибка времени компилятора:
Ошибка времени компоновщика
#pragma once
, чтобы компилятор не включал один заголовок если он уже был включен в текущий .cpp, который скомпилирован Вы близки, вы хотите использовать @Html.Raw(str)
@Html.Encode
, принимает строки и гарантирует правильную обработку всех специальных символов. К ним относятся такие символы, как пробелы.
вы можете использовать @Html.Raw(str)
Подробнее MSDN для более
Возвращает разметку, которая не закодирована в HTML.
Этот метод обертывает разметку HTML, используя класс IHtmlString, который отображает unencoded HTML.
blockquote>
Вместо этого вы должны использовать IHtmlString
:
IHtmlString str = new HtmlString("<a href="/Home/Profile/seeker">seeker</a> has applied to <a href="/Jobs/Details/9">Job</a> floated by you.</br>");
Всякий раз, когда у вас есть свойства модели или переменные, которые должны содержать HTML, я считаю, что это, как правило, более эффективная практика. Прежде всего, это немного чище. Например:
@Html.Raw(str)
По сравнению с:
@str
Кроме того, я также считаю, что это немного безопаснее, чем использование @Html.Raw()
, поскольку проблема заключается в том, HTML хранится в вашем контроллере. В среде, где у вас есть интерфейсные и back-end разработчики, ваши сторонние разработчики могут быть более точно совместимы с тем, какие данные могут содержать значения HTML, тем самым сохраняя эту проблему во внутреннем (контроллере).
Обычно я стараюсь избегать использования Html.Raw()
, когда это возможно.
Еще одна вещь, которую стоит отметить, я не уверен, где вы назначаете str
, но несколько вещей, которые касаются мне, как вы можете это реализовать.
Во-первых, это должно быть сделано в контроллере, независимо от вашего решения (IHtmlString
или Html.Raw
). Вы должны избегать такой логики, как это в своем представлении, поскольку она на самом деле не принадлежит.
Кроме того, вы должны использовать свой ViewModel
для получения значений для вашего представления (и снова, в идеале, используя IHtmlString
как тип свойства). Увидеть что-то вроде @Html.Encode(str)
немного относительно, если вы не делаете этого просто для упрощения своего примера.
У меня была аналогичная проблема с полями ввода HTML в MVC. В веб-страничке показано только первое ключевое слово поля. Пример: поле ввода: «Быстрая коричневая лиса» Отображаемое значение: «The [
]. Разрешение заключалось в том, чтобы преобразовать переменную в кавычки в оператор значения следующим образом:
<input class="ParmInput" type="text" id="respondingRangerUnit" name="respondingRangerUnit"
onchange="validateInteger(this.value)" value="@ViewBag.respondingRangerUnit">