2013-10-02 46 views
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有關?

只是要注意,我簡化了我上面的佈局,我的確有一個或2個嵌套形式,但假設是確定的其他一切正常,這只是這第一部分功能不正常。

任何想法?

回答

1

Html表單不能嵌套。

Chrome會忽略非法標籤,因此不會顯示。

如需更多信息,請閱讀post

+0

我也在想這個,但看到其他人都在工作確定我認爲一切都很好。當我回家時我會看看這個。 – webnoob

+0

非常感謝Yan,雖然我知道多種形式,但你的回答讓我專注於重寫我的表格如何工作,從而解決了問題。 – webnoob

相關問題