Подтвердить что ты не робот

Проблема текстового литерала в представлении 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 '|', но второй '|' получает беспрепятственно.

4b9b3361

Ответ 1

Это потому, что, когда вы находитесь внутри оператора с { и }, только теги HTML считаются литералами, все остальное - на стороне сервера script. Поэтому вам нужно либо использовать стандартные теги HTML, такие как <div>, <span>,... или если вы хотите использовать литерал, используйте специальный тег <text>, который не выводится на ответ.

Ответ 2

Если ваш текст охватывает несколько строк, вы можете использовать тег <text>.

<text>your text here...
over to the 2nd line.</text>

Альтернативно, если вы просто хотите вывести символ канала, используйте директиву @: для указания текста, так что @:| будет выводить |, и сообщение об ошибке исчезнет.