そのため、MVC 3、Razor 1、およびWeb.Helpers 1を1年以上使用していますが、最近MVC 4、Razor 2、およびWeb.Helpers2に移行しました。 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;" />
サイトをMVC4、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.Helpers2への更新について非常に気分が良くなるような情報を入手できれば幸いです。