1

私は次のものを持っています:

_ImageGalleryPartial

@if (Model != null)
{
    foreach (var item in Model)
    {
        @Html.Partial("_ImageItem", item);
    }
}

_ImageItemPartial

@model WebsiteEngine.Models.PortfolioImage

@{
    string url = VirtualPathUtility.ToAbsolute(String.Format("~/{0}", Html.DisplayFor(m => m.FileName)));
}

@using (Html.BeginForm("DeleteImage", "Portfolio", FormMethod.Post, new { @class = "deleteImageForm" }))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true);

    @Html.HiddenFor(m => m.Name)
    @Html.HiddenFor(m => m.FileName)
    @Html.HiddenFor(m => m.Order)
    @Html.HiddenFor(m => m.PortfolioID)
    @Html.HiddenFor(m => m.PortfolioImageID)

    <div class="span3">
        <div class="item">
            <a class="fancybox-button" data-rel="fancybox-button" title="Photo" href="@url">
                <div class="zoom">
                    <img src="@url" alt="Photo" />                    
                    <div class="zoom-icon"></div>
                </div>
            </a>
            <div class="details">
                <a href="#" class="icon deleteImage" data-form=""><i class="icon-remove"></i></a>
            </div>
        </div>
    </div>
}

Chrome 開発ツールを使用してページ要素を調べると、最初の要素に周囲のフォームがありません。ページソースを(右クリックして)検査すると、フォームが表示されます。これにより、一部のJSがフォームを削除していると思われるため、JSを無効にしましたが、まだ欠落していました.

_ImageGalleryPartialを変更すると、次のようになります (空のモデルが追加されていることに注意してください)。

@if (Model != null)
{
    @Html.Partial("_ImageItem", new WebsiteEngine.Models.PortfolioImage());
    foreach (var item in Model)
    {
        @Html.Partial("_ImageItem", item);
    }
}

次に、すべての「正しい」要素がフォームを取得しますが、この最初のアイテムはフォームを取得しません。

これはまだ JS の問題だと思う傾向がありますが、JS を無効にしても問題が解決しないので、少し困惑しています。これは MVC でのいくつかのオフの動作ですか?

上記のレイアウトを単純化したことに注意してください。実際には 1 つまたは 2 つのネストされたフォームがありますが、他のすべてが問題ないので問題ないと仮定します。壊れているのはこの最初のパーシャルだけです。

何か案は?

4

1 に答える 1