Отношения между Razor и ASPX - PullRequest
0 голосов
/ 26 февраля 2011

Извините, я думаю, что ошибка в Razor не вызвана движком Razor.


Было несколько похожих вопросов, но я все еще в замешательстве. Возьмите следующий код в качестве примера:

<% Html.RenderAction("partial"); %>

@{Html.RenderAction("partial");}

страница aspx работает нормально, но Razor выдает ошибку: «Ни один маршрут в таблице маршрутов не соответствует предоставленным значениям». И даже это тоже неправильно.

Html.RenderAction("partial");

Так почему? Что на самом деле означает "@"? В чем разница или отношения между aspx и cshtml?

Ответы [ 3 ]

0 голосов
/ 09 сентября 2011

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

@Html.something

Также вы можете использовать c # внутри блока, например ...

@{ 
 string something = "value";
//you can later use that variable anywhere in the page

}

При рендеринге частичного представления в mvc с использованием бритвы это будет выглядеть так

@Html.Partial("Folder Name/Partial View Name")

нет необходимости заканчивать код бритвы с помощью;

Razor очень умный и может сказать, когда вы вернетесь в HTML

Папка, в которой находится частичный вид, в папке Views. Вы всегда можете поместить частичное представление в общую папку, и вам не нужно будет указывать имя папки, оно будет проверяться там по умолчанию, я почти уверен.

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

Надеюсь, это поможет, если у вас есть еще вопросы, дайте мне знать.

0 голосов
/ 02 декабря 2011

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

Встроенный

@Html.TextBox("LastName", Model.LastName)

заметить, что нет; он не нужен

Блок кода

@{
     ViewBag.FirstName = "Bob";
}

весь код в блоке кода является стандартным C #, и каждый оператор должен заканчиваться символом ";".

Смесь HTML и Razor

<div class="label">
   @Html.LabelFor(model => model.FirstName)
</div>

анализатор бритвы может определить, гдеC # и HTML-код начинаются и заканчиваются.

0 голосов
/ 26 февраля 2011

Представляем Razor должен быть в состоянии ответить на ваш вопрос о том, что такое "@" и Razor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...