部分查看不加载数据

问题描述:

我想加载一个选项卡内的部分视图,但它不显示数据。部分查看不加载数据

我使用下面的代码我不能用剃刀代码这是我想从另一个视图中加载的局部视图只是做一个循环

@model IEnumerable<solitude.models.ProductImages> 


@{ 
    ViewData["Title"] = "ProductPicturesList"; 
    Layout = "~/Views/Shared/_LoginAdminLte.cshtml"; 
} 

<h2>ProductPicturesList</h2> 



<table class="table"> 
    <thead> 
     <tr> 
      <th> 
       Picture Title 
      </th> 


      <th> 
       Image 
      </th> 


    </thead> 

    <tbody> 
     @foreach (var item in Model) 
     { 
      <tr> 
       <td> 
        @Html.DisplayFor(modelItem => item.Title) 
       </td> 
      </tr> 


     <td> 
      <a asp-action="Edit" asp-route-id="@item.ProductID">Edit</a> | 
      <a asp-action="Details" asp-route-id="@item.ProductID">Details</a> | 
      <a asp-action="Delete" asp-route-id="@item.ProductID">Delete</a> 
     </td> 

     } 
     </tbody> 
    </table> 

它在主力名单,我的事业使用视图模型,但我想显示上方的图片列表上传的图片上传我最好的办法是做到这一点obv它不返回任何结果我使用我的主页控制器。

@model solitude.models.Models.ViewModels.ProductImageVm 
@* 
    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860 
*@ 

@Html.PartialAsync("_ProductPicturesList.cshtml") 

<div class="form-group"> 

<form asp-controller="Products" asp-action="FileUpload" asp-route-returnurl="@ViewData["ReturnUrl"]" enctype="multipart/form-data" method="post" class="form-horizontal" role="form"> 



    <input asp-for="Title" /> 
    <input asp-for="ProductId" type="hidden" /> 
    <input asp-for="Image" /> 
    <input type="submit" /> 
</form> 

编辑2 我的产品图片作为一类应该将其改为

public class ProductImages 
{ 


     [Key] 
     public int ProductImageId { get; set; } 

     public int ProductID { get; set; } 


     public string ProductImageTitle { get; set; } 
     public string ProductImageUploadUrl { get; set; } 
     public string ProductImageRealPath { get; set; } 

     public string ServerIpAddress { get; set; } 
     public string ProductImageAltTag { get; set; } 

     public int DisplayOrder { get; set; } 

     public string Image { set; get; } 

    } 
} 
+0

那么你不传递模型'的IEnumerable '你部分..在这里添加它们:'@ Html.PartialAsync(“_ ProductPicturesList.cshtml”,(模型发送到部分视图))'。 – nbokmans

你的部分观点是强类型到ProductImages集合。但是在你调用这个局部视图的主视图中,你没有将模型(这是ProductImage对象的集合)传递给这个局部视图。如果你没有明确地传递模型,它会尝试为父视图使用模型。在你的情况你的父视图强烈ProductImageVm视图模型类。所以它不会满足部分观点的期望。

解决方案是传递一个有效的ProductImages集合。如果您的视图模型有该类型的集合属性,你可以做这种类型的IEnumerable<solitude.models.ProductImages>

@await Html.PartialAsync("_ProductPicturesList.cshtml",Model.Images) 

假设Images理想情况下,是不是一个好主意,以实体类与视图模型混合。所以,我将创建一个视图模型类的ProductImage局部视图和使用,作为财产

public class ProductImg 
{ 
    public string Title { set;get;} 
    public string FileName { set;get;} 
    // or path as needed 
} 
public class EditProductImageVm 
{ 
    public string Title { set;get;} //for the new item 
    public IFormFile Image { set;get; } //for the new item 

    public IEnumerable<ProductImg> Images { set;get;} 
} 

现在确保主视图不强类型来EditProductImageVm和你的部分观点是强类型来IEnumerable<ProductImg>。另外你需要将呼叫等待到PartialAsync方法

@model YourNameSpaceGoesHere.EditProductImageVm 
<div> 
    @await Html.PartialAsync("_ProductPicturesList.cshtml",Model.Images); 
</div> 
<form asp-controller="Products" asp-action="FileUpload" enctype="multipart/form-data" 
           method="post" > 
    <input asp-for="Title" /> 
    <input asp-for="Image" /> 
    <input type="submit" /> 
</form> 

而且你的部分观点将

@model IEnumerable<YourNameSpaceGoesHere.ProductImg> 
<h3>Images</h3> 
<table class="table table-condensed table-bordered"> 
    @foreach (var item in Model) 
    { 
     <tr> 
      <td> 
       @Html.DisplayFor(modelItem => item.Title) 
      </td> 
      <td> 
       <!-- adjust the below img src path as needed --> 
       <img src="@Url.Content("~/uploads/"+item.FileName)"/> 
      </td> 
     </tr> 
    } 
</table> 
+0

我向你展示了我的产品图片在上面的再次编辑很多感谢这是一个实体,所以请指教我如何应该这样做 – rogue39nin

+0

谢谢有没有什么好的进度条嵌入到mvc中,还是仍然是sep的东西 – rogue39nin

+0

可能有一些客户端库来做到这一点。只是谷歌,你会发现吨 – Shyju