私は次のものを持っています:
_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 つのネストされたフォームがありますが、他のすべてが問題ないので問題ないと仮定します。壊れているのはこの最初のパーシャルだけです。
何か案は?