在我的一个观点中,我遇到了几个不同的例外代码:
<% 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());
} %>
我遇到的第一个错误在这里描述: link text
因此你看到Html.RenderPartial("EditReview", Model.Book.Review, new ViewDataDictionary())
到那里结束。
我遇到的另一个问题是,对ReviewReference
的{{1}}评估if条件实际上是null
时,仍然以某种方式达到了else语句,而第二个局部视图正在尝试失败渲染自己。
我是否以错误的方式使用了这些交替的内联代码标签?如何在<% %>
和<%= %>
之间来回切换?
谢谢。
修改
好的,我太快就标记了答案。我只是用答案中的给定代码尝试了它,并且仍在评估else块,并尝试将null对象传递给局部视图... darn it。
答案 0 :(得分:1)
您在那里使用标签是正确的。
它们不是2种交替样式,而是视图引擎处理不同语句的方式不同。它会让人感到困惑并不奇怪。
<%=
:将此视为Response.Write()
。你提供一个字符串。
<% Html.RenderPartial
- 这是一个给视图引擎实际呈现局部视图的命令。你没有给它一个字符串,而是告诉视图去获取另一个片段(部分视图),并将其写出来。
答案 1 :(得分:1)
缺少几个结束%&gt;
<% 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()); %>
<% } %>
答案 2 :(得分:1)
好的,所以事实证明我的标签使用情况很好,但我的条件是关闭的。它必须是:
if (Model.Book.ReviewReference.EntityKey == null)
我错过了EntityKey属性。