2

そのため、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への更新について非常に気分が良くなるような情報を入手できれば幸いです。

4

2 に答える 2

3

今はテストできませんが、これを試してください:

<li class="@(0 == RowCount % 2 ? "even" : "odd")">

中括弧の代わりに括弧に注意してください。

于 2013-01-29T16:01:02.000 に答える
1

新しい構文が機能する「理由」に応じて@(....)、MVC4には「条件付き属性」のサポートが含まれていることに注意してください。

詳細については、こちらをご覧ください:http ://www.davidhayden.me/blog/conditional-attributes-in-razor-view-engine-and-asp.net-mvc-4

于 2013-01-30T04:41:05.897 に答える