Встроенный код ASP.NET MVC2 - смешивание тегов - PullRequest
0 голосов
/ 22 сентября 2010

Я столкнулся с парой разных исключений с этим блоком кода в одном из моих представлений:

<% if (Model.Book.ReviewReference == null)
   {%>
       <%=Html.ActionLink("Rate / review this book", "Create", "Review", null, new { id = "reviewLink" }) %>
      <% Html.RenderPartial("CreateReview");
   }
   else
   {%> 
       <%= Html.ActionLink("Edit this book's rating / review","Edit", "Review", new { reviewID = Model.Book.ReviewID}, new {id = "reviewLink"}) %>
        <% Html.RenderPartial("EditReview", Model.Book.Review, new ViewDataDictionary());
   }  %>

Первая ошибка, с которой я столкнулся, была описана здесь: текст ссылки

таким образом Html.RenderPartial("EditReview", Model.Book.Review, new ViewDataDictionary()), который вы видите там до конца.

Другая проблема, с которой я столкнулся, - это когда условие if вычисляется для ReviewReference, который фактически является null, оператором elseвсе еще каким-то образом достигается, и второе частичное представление предпринимает неудачную попытку отрисовки.

Я неправильно использовал эти чередующиеся теги встроенного кода?Как правильно перемещаться между <% %> и <%= %>?

Спасибо.

Редактировать:

ОК, я отметилответ слишком рано.Я только что попробовал это с данным кодом из ответа, и этот блок еще оценивается, и пытается передать нулевые объекты в частичное представление ... черт возьми.

Ответы [ 3 ]

1 голос
/ 22 сентября 2010

Отсутствует пара закрытия%>

<% if (Model.Book.ReviewReference == null)
   {%>
       <%=Html.ActionLink("Rate / review this book", "Create", "Review", null, new { id = "reviewLink" }) %>
      <% Html.RenderPartial("CreateReview"); %>
   <%}
   else
   {%> 
       <%= Html.ActionLink("Edit this book's rating / review","Edit", "Review", new { reviewID = Model.Book.ReviewID}, new {id = "reviewLink"}) %>
        <% Html.RenderPartial("EditReview", Model.Book.Review, new ViewDataDictionary()); %>
   <% }  %>
1 голос
/ 22 сентября 2010

ОК, так получается, что использование моего тега было в порядке, но мое условие if было выключено. Это должно было быть:

if (Model.Book.ReviewReference.EntityKey == null)

Мне не хватало свойства EntityKey.

1 голос
/ 22 сентября 2010

Вы правильно используете теги там.

Это не 2 чередующихся стиля, а различия в том, как механизм представления обрабатывает различные операторы. Не удивительно, что это может сбить с толку.

<%=: Думайте об этом как Response.Write(). Вы снабжаете его строкой.

<% Html.RenderPartial - это команда, данная движку представления для фактического рендеринга частичного представления. Вы не даете ему строку, а скорее говорите представлению пойти, взять другой фрагмент (частичное представление) и записать его.

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