Как я могу заставить этот частичный вид правильно отображать? - PullRequest
2 голосов
/ 26 ноября 2011

У меня есть следующий код в представлении MVC 3

    <% foreach (var stockItem in Model.Shop.Stock) { %>
        <div class="shopItem">
            <div class="shopItemLeft">
                <% Html.RenderPartial("ItemImageDisplay", stockItem.Item); %>
            </div>
            <div class="shopItemRight">
                <strong><%= stockItem.Item.ToString() %></strong><br />
                <%= stockItem.Item.CalculatePrice() %><br />
                <%= stockItem.Quantity %> in stock<br />
                <%= Html.ActionLink("Buy", "BuyShopItem", new { shopId = Model.Shop.Id, itemId = stockItem.Item.Id }, null) %>
            </div>
        </div>
    <% } %>

Когда это визуализируется, частичное представление ItemImageDisplay не находится внутри тега div, в который я его поместил, вместо этого он отображает, как если бы я поместил:

    <% foreach (var stockItem in Model.Shop.Stock) { %>
                <% Html.RenderPartial("ItemImageDisplay", stockItem.Item); %>
    <% } %>

    <% foreach (var stockItem in Model.Shop.Stock) { %>
        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong><%= stockItem.Item.ToString() %></strong><br />
                <%= stockItem.Item.CalculatePrice() %><br />
                <%= stockItem.Quantity %> in stock<br />
                <%= Html.ActionLink("Buy", "BuyShopItem", new { shopId = Model.Shop.Id, itemId = stockItem.Item.Id }, null) %>
            </div>
        </div>
    <% } %>

html частичного представления выглядит следующим образом:

<%= Html.Image("~/Content/Images/Items/" + Model.Id + ".png", Model.ToString(), new { onmouseover = "tooltip('item:" + Model.Id + "');", onmousemove = "tooltip('item:" + Model.Id + "');", onmouseout = "tooltipRem();" }) %>

Пожалуйста, вы можете помочь мне понять, почему это рендеринг такой, какой он есть, и что я могу сделать, чтобы это не произошло?

РЕДАКТИРОВАТЬ: Вот визуализированный вывод для этого раздела:

<img alt="Can of Pineapples" onmousemove="tooltip(&#39;item:1152&#39;);" onmouseout="tooltipRem();" onmouseover="tooltip(&#39;item:1152&#39;);" src="/Content/Images/Items/1152.png" title="Can of Pineapples" /><img alt="Kraken Treats" onmousemove="tooltip(&#39;item:1104&#39;);" onmouseout="tooltipRem();" onmouseover="tooltip(&#39;item:1104&#39;);" src="/Content/Images/Items/1104.png" title="Kraken Treats" /><img alt="Orange Jelly" onmousemove="tooltip(&#39;item:1279&#39;);" onmouseout="tooltipRem();" onmouseover="tooltip(&#39;item:1279&#39;);" src="/Content/Images/Items/1279.png" title="Orange Jelly" /><img alt="Peanuts" onmousemove="tooltip(&#39;item:509&#39;);" onmouseout="tooltipRem();" onmouseover="tooltip(&#39;item:509&#39;);" src="/Content/Images/Items/509.png" title="Peanuts" /><img alt="Fourth Year Anaversary Cake" onmousemove="tooltip(&#39;item:859&#39;);" onmouseout="tooltipRem();" onmouseover="tooltip(&#39;item:859&#39;);" src="/Content/Images/Items/859.png" title="Fourth Year Anaversary Cake" /><img alt="Taco" onmousemove="tooltip(&#39;item:486&#39;);" onmouseout="tooltipRem();" onmouseover="tooltip(&#39;item:486&#39;);" src="/Content/Images/Items/486.png" title="Taco" /><img alt="Can of Blueberries" onmousemove="tooltip(&#39;item:1154&#39;);" onmouseout="tooltipRem();" onmouseover="tooltip(&#39;item:1154&#39;);" src="/Content/Images/Items/1154.png" title="Can of Blueberries" /><img alt="Strawberry Jam" onmousemove="tooltip(&#39;item:639&#39;);" onmouseout="tooltipRem();" onmouseover="tooltip(&#39;item:639&#39;);" src="/Content/Images/Items/639.png" title="Strawberry Jam" /><img alt="Crisps" onmousemove="tooltip(&#39;item:726&#39;);" onmouseout="tooltipRem();" onmouseover="tooltip(&#39;item:726&#39;);" src="/Content/Images/Items/726.png" title="Crisps" /><img alt="Cooked Shrimp" onmousemove="tooltip(&#39;item:521&#39;);" onmouseout="tooltipRem();" onmouseover="tooltip(&#39;item:521&#39;);" src="/Content/Images/Items/521.png" title="Cooked Shrimp" /><img alt="Fishy Finger" onmousemove="tooltip(&#39;item:629&#39;);" onmouseout="tooltipRem();" onmouseover="tooltip(&#39;item:629&#39;);" src="/Content/Images/Items/629.png" title="Fishy Finger" /><img alt="Can of Peaches" onmousemove="tooltip(&#39;item:1151&#39;);" onmouseout="tooltipRem();" onmouseover="tooltip(&#39;item:1151&#39;);" src="/Content/Images/Items/1151.png" title="Can of Peaches" />

        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong>Can of Pineapples</strong><br />
                940<br />
                10 in stock<br />
                <a href="/Market/BuyShopItem?shopId=1&amp;itemId=1152">Buy</a>
            </div>
        </div>

        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong>Kraken Treats</strong><br />
                934<br />
                7 in stock<br />
                <a href="/Market/BuyShopItem?shopId=1&amp;itemId=1104">Buy</a>
            </div>
        </div>

        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong>Orange Jelly</strong><br />
                827<br />
                9 in stock<br />
                <a href="/Market/BuyShopItem?shopId=1&amp;itemId=1279">Buy</a>
            </div>
        </div>

        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong>Peanuts</strong><br />
                116<br />
                8 in stock<br />
                <a href="/Market/BuyShopItem?shopId=1&amp;itemId=509">Buy</a>
            </div>
        </div>

        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong>Fourth Year Anaversary Cake</strong><br />
                1794<br />
                7 in stock<br />
                <a href="/Market/BuyShopItem?shopId=1&amp;itemId=859">Buy</a>
            </div>
        </div>

        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong>Taco</strong><br />
                950<br />
                7 in stock<br />
                <a href="/Market/BuyShopItem?shopId=1&amp;itemId=486">Buy</a>
            </div>
        </div>

        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong>Can of Blueberries</strong><br />
                317<br />
                8 in stock<br />
                <a href="/Market/BuyShopItem?shopId=1&amp;itemId=1154">Buy</a>
            </div>
        </div>

        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong>Strawberry Jam</strong><br />
                1032<br />
                10 in stock<br />
                <a href="/Market/BuyShopItem?shopId=1&amp;itemId=639">Buy</a>
            </div>
        </div>

        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong>Crisps</strong><br />
                179<br />
                10 in stock<br />
                <a href="/Market/BuyShopItem?shopId=1&amp;itemId=726">Buy</a>
            </div>
        </div>

        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong>Cooked Shrimp</strong><br />
                663<br />
                11 in stock<br />
                <a href="/Market/BuyShopItem?shopId=1&amp;itemId=521">Buy</a>
            </div>
        </div>

        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong>Fishy Finger</strong><br />
                974<br />
                10 in stock<br />
                <a href="/Market/BuyShopItem?shopId=1&amp;itemId=629">Buy</a>
            </div>
        </div>

        <div class="shopItem">
            <div class="shopItemLeft">

            </div>
            <div class="shopItemRight">
                <strong>Can of Peaches</strong><br />
                786<br />
                7 in stock<br />
                <a href="/Market/BuyShopItem?shopId=1&amp;itemId=1151">Buy</a>
            </div>
        </div>

1 Ответ

2 голосов
/ 26 ноября 2011

Хм, я подозреваю, что это потому, что вы используете Html.RederPartial вместо Html.Partial. Последний возвращает строку, тогда как первый пишет непосредственно в поток ответов. У меня есть подлое чувство, что MVC выполняет весь цикл foreach, а затем пишет в конце ответ, который объяснит ваши результаты.

...