所以,我已经使用 MVC 3、Razor 1 和 Web.Helpers 1 一年多了,但最近转移到了 MVC 4、Razor 2 和 Web.Helpers 2。我注意到任何发生了一些奇怪的事情在 HTML 属性中具有内联代码或 Web 帮助程序的视图。即,代码呈现在属性之外。
示例 1:(MVC 3,Razor 1,Web.Helpers 1)
<li class="@{ Write(0 == RowCount % 2 ? "even" : "odd"); }">
将呈现为:
<li class="even">
或者
<li class="odd">
示例 2:(MVC 3,Razor 1,Web.Helpers 1)
<img alt="@item.PlanNumber" title="@item.PlanNumber" src="@{Html.RenderAction("GetHomeImage", new { street = (string)item.AddrStreet, photo = (string)item.ELEV1, type = (string)item.RecordType, plan = (string)item.PlanNumber, elevation = (string)item.PlanElevation, defaultImage = (string)item.HomeImage });}" border="0" style="padding:2px 2px 2px 2px;" />
将呈现为:
<img alt="2473W" title="2473W" src="/Content/_gallery/homes/photos/17411WOODFALLSLANE_S.jpg" border="0" style="padding:2px 2px 2px 2px;" />
当我将站点更新为 MVC 4、Razor 2、Web.Helpers 2 时,我看到以下内容
示例 1 呈现为:
<lieven class="">
或者
<liodd class="">
示例 2 呈现为:
<img alt="2473W" title="2473W" /Content/_gallery/homes/photos/17411WOODFALLSLANE_S.jpg src="" border="0" style="padding:2px 2px 2px 2px;" />
我已经能够通过将 HTML.RenderAction 更改为 HTML.Action 来解决这个问题,所以我的代码现在是:(MVC 4,Razor 2,Web.Helpers 2)
示例 1:
string rowClass = (0 == RowCount % 2) ? "even" : "odd";
<li class="@rowClass">
示例 2:
<img src="@Html.Action("GetHomeImage", "FindYourHome", new { street = (string)item.AddrStreet, photo = (string)item.ELEV1, type = (string)item.RecordType, plan = (string)item.PlanNumber, elevation = (string)item.PlanElevation, defaultImage = (string)item.HomeImage })" border="0" style="padding:2px 2px 2px 2px;" alt="@item.PlanNumber" title="@item.PlanNumber" />
这两个例子都正确呈现,但我不确定为什么?
我非常感谢任何可用的信息,它们将帮助我在我们的站点中找到任何其他实例,并使我对更新到 MVC 4、Razor 2 和 Web.Helpers 2 感觉更好。