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

Предоставление частичных представлений с помощью Razor в MVC5

Я пытаюсь получить частичное представление для рендеринга с помощью Razor в MVC5. Когда я использую

@{ Html.RenderPartial("ViewName", model); }

Я получаю ошибку парсера:

Неожиданный символ "{" после символа "@". Как только внутри тела блока кода (@if {}, @{} и т.д.) Вам не нужно использовать "@{" для переключения на код.

Когда я удаляю {}, т.е.:

@Html.RenderPartial("ViewName", model);

Я получаю ошибку компиляции

Невозможно неявно преобразовать тип 'void' в 'object'.

Что я делаю неправильно?

4b9b3361

Ответ 1

Вы не разместили контекст этого кода, но эта ошибка возникает только тогда, когда вы используете @ непосредственно внутри кодового блока без каких-либо HTML-оберток. Например:

@if (true) {
    @{ Html.RenderPartial(...); }
}

Дала бы вам ошибку, а:

@if (true) {
    <div>
        @{ Html.RenderPartial(...); }
    </div>
}

Было бы хорошо. Вы также можете решить эту проблему, просто удалив блок кода для Html.RenderPartial целиком, включая @:

@if (true) {
    Html.RenderPartial(...);
}

Ответ 2

Вы также можете использовать @Html.Partial("~/View/Home/myview.cshtml")

Он возвращает строку, в то время как Html.RenderPartial вызывает запись внутри, и возвращает void.

Ответ 3

Это неправильно:

@Html.RenderPartial("ViewName", model);

Это правильно:

@{ Html.RenderPartial("ViewName", model);  }

Ошибка синтаксического анализа может быть вызвана содержимым частичного представления. Например, если у вас есть адрес электронной почты, убедитесь, что вы используете @@для правильного выхода из знака @.

Неожиданный символ "{" после символа "@". Однажды внутри тела кода block (@if {}, @{} и т.д.), вам не нужно использовать "@{" для переключения на код.

Ответ 4

можете ли вы показать код, окружающий ваш RenderPartial? Я предполагаю, что вы находитесь в цикле, если блок или какой-то другой код блока. Если это так, вы просто вызываете

Html.RenderPartial("ViewName", model);

Ответ 5

Пожалуйста, просмотрите свой код, возможно, вы получите эту ошибку, потому что используете этот код: @{ Html.RenderPartial("ViewName", model); } внутри любого другого предложения @{}. Пожалуйста, внимательно прочитайте сообщение об ошибке, которое вы получите в браузере, вам не нужно использовать @{} для переключения на код, потому что вы уже находитесь внутри, поэтому просто удалите @{ и }, и вы должны получить он работает правильно.