Проблема текстового литерала в представлении MVC3 Razor
Почему мне нужно использовать тег <text>
для того, чтобы заключить литерал трубы '|' в этой разметке? Разумеется, это далеко не в рамках метода ActionLink.
@foreach (var item in Model.DetailItem.PlannedResources)
{
<tr>
<td>
@if (Model.ViewMode == ViewMode.Edit)
{
@Html.ActionLink("Edit", "Edit", new { id = item.PlannedResourceId }) <text>|</text>
@Html.ActionLink("Delete", "Delete", new {id = item.PlannedResourceId})
}
@Html.ActionLink("Details", "Details", new { id = item.PlannedResourceId })
</td>
<td>
| @item.ResourceType.Name
</td>
</tr>
}
Если я не использую его, я получаю сообщение об ошибке CS1525: Invalid expression term '|'
, но второй '|' получает беспрепятственно.
Ответы
Ответ 1
Это потому, что, когда вы находитесь внутри оператора с {
и }
, только теги HTML считаются литералами, все остальное - на стороне сервера script. Поэтому вам нужно либо использовать стандартные теги HTML, такие как <div>
, <span>
,... или если вы хотите использовать литерал, используйте специальный тег <text>
, который не выводится на ответ.
Ответ 2
Если ваш текст охватывает несколько строк, вы можете использовать тег <text>
.
<text>your text here...
over to the 2nd line.</text>
Альтернативно, если вы просто хотите вывести символ канала, используйте директиву @:
для указания текста, так что @:|
будет выводить |
, и сообщение об ошибке исчезнет.